为LWP :: UserAgent设置问题参数

时间:2011-06-29 03:27:21

标签: perl lwp-useragent

my %parameters = (
                        key => 'value'
                 );
my $response = $ua->get('http://example.com/i', %parameters);

我正在尝试获取http://example.com/i?key=value的内容,但在调试后我发现%parameters存储在http标头中而不是url参数中。

我的代码出了什么问题?

虽然perldoc告诉我:

$ua->get( $url , $field_name => $value, ... )

但如果我将这些参数放在%parameters中,对吧?

也应该有用

2 个答案:

答案 0 :(得分:9)

get的其他参数是HTTP标头。对于GET请求,参数包含在URL本身URLencoded中。您可以使用URI模块创建包含GET变量的相应URL,或者自己构建它们(可能使用URI :: Escape来对值进行urlencode)。

例如:

my %parameters = (
                        key => 'value'
                 );
my $url = URI->new("http://example.com/i");
$url->query_form(%parameters);
my $response = $ua->get($url);

答案 1 :(得分:2)

来自fine manual

  

$ ua> get($ url)
  $ ua> get($ url,$ field_name => $ value,...)
  此方法将在给定的$ url上调度GET请求。 可以给出进一步的参数来初始化请求的标题。

强调我的。您误读了文档,get()的额外参数是HTTP标头字段,而不是CGI参数。如果你想要包含一些CGI参数,那么你必须自己将它们添加到URI中(最好用URI)。