代码之家  ›  专栏  ›  技术社区  ›  Paul

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

  •  2
  • Paul  · 技术社区  · 15 年前

    在Perl脚本中(使用Ubuntu),我想做一些类似的事情

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

    我写这篇文章是为了让它看起来更像prototype.js ajax调用,但显然我们使用的是Perl而不是Javascript,我们使用的是服务器而不是浏览器,调用方希望阻止它,直到我们从远程服务器得到一个应答或超时为止。如果出现服务器或超时错误,则定义的($response)应为false。如果有一种方法可以获取HTTP状态,这很好,但这足以知道请求失败了。它应该可以做得到或者发布。

    我知道我可以通过使用系统和wget来做到这一点,但这是一个蹩脚的选择。

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

    有漂亮整洁的Perl接口吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Elle H    14 年前

    您可以使用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

        2
  •  4
  •   mctylr    15 年前

    这个 事实上的 方法与 LWP WWW:Mechanize 按要求传递。这些库通常包含在Perl包中,但除此之外,通过 CPAN . CGI.pm 是处理最简单Web请求的最基本模块。

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