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
中,对吧?
答案 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)。