2011-12-13 42 views
0

我使用了HTTPClient首次和提出請求如下所示:了HTTPClient和解析出的標頭值

r=c.get('http://slashdot.org') 
tmp={} 
tmp[:location_id]=x.id 
tmp[:body]=r.body 
tmp[:last_modified]=r.header['Last-Modified'] 
tmp[:content_length]=r.header['Content-Length'] 
puts "last modified: " + r.header['Last-Modified'].to_s 
# last modified: ["Fri, 12 Aug 2011 19:26:24 GMT"] 
puts "content-length: " + r.header['Content-Length'].to_s 
# content-length: ["2138"] 
puts tmp['location_id'] 
Crawl.create(tmp) 

是否有訪問像修飾持續超過r.header['Last-Modified']返回["Tue, 18 Oct 2011 00:33:15 GMT"]變量更好的辦法?

THX


取出支架和報價。我寧願它只是輸出:

Tue, 18 Oct 2011 00:33:15 GMT 

而不是

["Tue, 18 Oct 2011 00:33:15 GMT"] 

我搞清楚我可能做錯了什麼。

THX

+0

你想看什麼? –

+0

如果您向我們展示課程(或至少是簡化版本),將會有所幫助。 –

回答

0

的 「[...]」 意味着你從r.header['Last-Modified']獲取對象是一個數組。 HTTPClient#get返回HTTP::Message對象。並且HTTP::Message#header[]爲給定鍵返回一個數組(這次是'Last-Modified')。

你可以從數組中選擇第一個字符串; r.header['Last-Modified'].first

還有另一種方法,您可以通過調用r.headers來獲得給定響應頭的哈希對象。 HTTP::Message#headers會選擇第一個值而不是你,所以r.headers['Last-Modified']應該可以工作。

HTTP :: Message#header []返回數組的原因是HTTP響應頭可能在單個響應中有多個鍵。