【问题标题】:LWP::UserAgent and HTTP::Request for a POST requestLWP::UserAgent 和 HTTP::Request 用于 POST 请求
【发布时间】:2013-10-09 22:03:23
【问题描述】:

在某个脚本中我试图写这个:

my $ua = LWP::UserAgent->new;
my $res = $ua->post($url, Content => $data);

并得到“400 错误请求”。 经过一番阅读,我尝试了这个:

my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new( 'POST', $url );
$req->content( $data );
my $res = $ua->request( $req );

它有效,但我认为这两个应该做同样的事情。我在这里想念什么? 我是否误解了HTTP::RequestLWP::UserAgent 的文档中的某些内容?

有没有办法让 LWP::UserAgent 打印它在做什么?

【问题讨论】:

    标签: perl http-request lwp-useragent


    【解决方案1】:

    这是一种方法:

    #!/usr/bin/perl
    use strict;
    use warnings;
    use LWP::UserAgent;
    
    {
        no strict "refs";
        no warnings "redefine";
        my $orig_sub = \&LWP::UserAgent::send_request;
        *{"LWP::UserAgent::send_request"} = sub {
            my ($self, $request) = @_;
            print $request->as_string . "\n";
            my $response = $orig_sub->(@_);
            print $response->as_string . "\n";
            return $response;
        };
    }
    
    my $a = LWP::UserAgent->new;
    my $response = $a->get("http://google.com");
    

    它将打印出 LWP::UserAgent 所做的所有请求和响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2023-03-26
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      相关资源
      最近更新 更多