如何将信息转发到另一个网站并在Perl中获取响应?

时间:2010-02-18 04:23:32

标签: perl web-services

在Perl脚本中(使用Ubuntu)我想做类似

的事情
    use Blah;
    ...
    ...
    my $response = 
       &Blah::Fetch($URL, {'method'=>'POST', 'parameters' => \%params});

我为了方便而编写的看起来很像Prototype.js ajax调用,但显然我们使用的是Perl而不是Javascript,我们在服务器上而不是浏览器,并且调用者想要阻止直到我们从远程服务器获得答案或超时。如果出现服务器或超时错误,则定义的($ response)应为false。如果有一种获取HTTP状态的方法很好,但知道请求失败就足够了。它应该可以执行GET或POST。

我知道我可以通过使用system和wget来做到这一点,但这是一个kludge。

在Perl中执行此任务的最佳方法是什么?

是否有一个很好又整洁的Perl界面?

2 个答案:

答案 0 :(得分:4)

您可以使用HTTP :: Request

use HTTP::Request::Common qw(POST); 
use LWP::UserAgent; 

$ua = LWP::UserAgent->new; 
$ua->timeout(3); 

my $req = (POST 'http://stackoverflow.com',  
["param1" => $var1, 
"param2" => $var2]); 

$response = $ua->request($req); 
$content = $response->content; 

exit;

有关回复元素,请参阅此处:http://kobesearch.cpan.org/htdocs/libwww-perl/HTTP/Request.html

答案 1 :(得分:4)

事实上的方法与LWPWWW:Mechanize一起传递请求。这些库通常包含在Perl包中,但也可以通过CPAN获得。 CGI.pm是处理大多数简单Web请求的最基本模块。

两者的教程很常见,请尝试http://perl.com/http://PerlMonks.org/ http://perldoc.perl.org/等。如果您的需求是基本的,LWP还提供LWP :: Simple。