我知道如果你想使用cookie,你必须编写代码:
$ua = LWP::UserAgent->new();
$ua->cookie_jar(HTTP::Cookies->new());
然后你可以get()、post()等等。
但是如果我只是将 cookie 字符串放入 HTTP HEADER 和 get() 中,我无法得到正确的响应。作为:
$ua = LWP::UserAgent->new();
$ua->get($url, 'Cookie' => $cookie_string);
我想您会发现Cookie使用该方法正确设置了标题。
为了确保,你可以写
my $resp = $ua->get('http://www.myurl.com', Cookie => 'my=data');
print $resp->request->as_string;
并且您应该看到请求包含该行
Cookie: my=data
从文档中,它看起来$ua->cookie_jar()需要一个哈希,要么指定选项,要么提供一个数据结构来存储 cookie。我会尝试
$ua->cookie_jar({});
另外,请注意,您尝试使用的方法只会将 cookie 存储在内存中,因此一旦您的脚本结束,您对所述 cookie 的了解也会随之消失。你可能想看看
http://metacpan.org/pod/HTTP::Cookies
http://www.perl.com/pub/2002/08/20/perlandlwp.html
对于内存 cookie jar 和基于文件的 cookie jar 的示例。
至于为什么 HTTP::Cookie 在以您的方式调用时不会返回合适的哈希,我不确定,但似乎不是。