2013-02-12 103 views
2

我知道,如果你想使用cookie,您必須編寫代碼爲:Perl的LWP:發送的Cookie通過HTTP標頭不起作用

$ua = LWP::UserAgent->new(); 
$ua->cookie_jar(HTTP::Cookies->new()); 

那麼你就可以得到(),後()等。

但是,如果我只是將cookie字符串放入HTTP HEADER並get(),我無法獲得正確的響應。正如:

$ua = LWP::UserAgent->new(); 
$ua->get($url, 'Cookie' => $cookie_string); 

回答

2

我想你會發現使用該方法正確設置了Cookie標題。

要確保,你可以寫

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

print $resp->request->as_string; 

,你應該看到的是,請求中包含線

Cookie: my=data 
-1

從文檔,它看起來像$ua->cookie_jar()預計哈希,或者指定選項或提供的數據結構來cookies會存儲在我會嘗試

$ua->cookie_jar({}); 

此外,要。意識到您嘗試使用的方法只會將cookie存儲在內存中,所以一旦腳本結束,您對cookie的瞭解也會相應地增加。你可能想看看

http://metacpan.org/pod/HTTP::Cookies

http://www.perl.com/pub/2002/08/20/perlandlwp.html

對於這兩種內存餅乾罐,和基於文件的那些例子。至於爲什麼HTTP :: Cookie在被調用時不會返回合適的哈希值,我不確定,但看起來並不是這樣。

+1

的'cookie_jar'方法需要一個對象作爲參數。您通常會傳遞'HTTP :: Cookies'的實例,但提供必要方法的任何對象都可以。作爲捷徑,當'LWP :: UserAgent'爲你創建一個'HTTP :: Cookies'對象時,你可以傳遞一個空的匿名哈希。 OP似乎想要的是在請求中傳遞一個特定的「Cookie」頭。 – Borodin 2013-02-12 15:34:54

相關問題