2011-06-01 53 views
0

我看到一些奇怪的行爲與遏制,它是cookiejar。在irb:遏制(捲曲爲紅寶石)不正確使用cookiejar

>> require 'curl' 
=> true 
>> a = Curl::Easy.new 
=> #<Curl::Easy> 
>> a.enable_cookies = true 
=> true 
>> a.cookiejar = "cookies.txt" 
=> "cookies.txt" 
>> a.url = "http://www.amazon.com" 
=> "http://www.amazon.com" 
>> a.perform 
=> true 

在這裏我想有一些方法來檢索amazon.com放置的cookie,但我無法這樣做。我指定爲cookiejar的cookies.txt文件不存在,並且#cookies方法返回nil。但是,如果我退出irb,則cookies.txt文件會顯示,並在其中包含正確的cookie。有什麼建議麼?

感謝

+0

在挖掘了路邊的一些資源之後,我瞭解到Curl :: Easy#cookiejar =方法設置了[這裏]提到的CURLOPT_COOKIJAR選項(http://curl.haxx.se/libcurl/c /curl_easy_setopt.html),並根據文檔,在調用'curl_easy_cleanup(3)'之前,不應該將cookie寫入該文件(這必須在關閉irb時發生,並且我也傾向於發生當你打電話給Curl :: Easy#關閉)。在關閉irb/Curl :: Easy實例之前,我仍然無法弄清楚如何訪問cookie。 – 2011-06-01 20:21:33

+0

Cookie保存在句柄中,因此如果您使用相同的句柄執行另一個請求,將使用cookie據此 – 2011-06-02 18:19:48

+0

我意識到這一點,但我用路邊書寫一些測試,要求我檢查某些cookie是否設置正確。因此,我有興趣查看cookie jar中的內容,而不是使用cookie jar進行後續請求。有任何想法嗎?謝謝。 – 2011-06-12 17:25:13

回答

0

我不知道,直到手柄被「封殺」與curl_easy_cleanup究竟如何紅寶石綁定工作,但潛在的libcurl API中,餅乾罐不保存()。我會假設很多面向對象的語言不會在libcurl「對象」上調用該函數,直到它以某種方式被殺死/垃圾回收,或者如果綁定提供了一種方式來顯式終止libcurl對象/句柄。