2

我知道如果你想使用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);
4

2 回答 2

2

我想您会发现Cookie使用该方法正确设置了标题。

为了确保,你可以写

my $resp = $ua->get('http://www.myurl.com', Cookie => 'my=data');

print $resp->request->as_string;

并且您应该看到请求包含该行

Cookie: my=data
于 2013-02-12T15:32:03.037 回答
-1

从文档中,它看起来$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 在以您的方式调用时不会返回合适的哈希,我不确定,但似乎不是。

于 2013-02-12T15:29:43.553 回答