2012-05-21 54 views
4

我在Ruby 1.9.2p290中使用Net::HTTP來處理一些很明顯的網絡調用。我可以在發送之前將一個完整的Ruby Net :: HTTP請求作爲字符串引用嗎?

我現在有一個需要看到的是被髮送到服務器(作爲一個長期大串符合HTTP 1.0/1.1完整請求。

換句話說,我想Net::HTTP處理的繁重生成與HTTP標準兼容的請求+正文,但是我想用自定義傳遞機制發送字符串。

Net::HTTPRequest似乎沒有任何有用的方法 - 我是否需要降低堆棧並且劫持東西?

有誰知道一個好的圖書館,也許不是Ne t :: HTTP,可以幫助嗎?

編輯:我也想這樣做同樣走另一條路(把一個字符串響應爲Net::HTTP::* - 雖然它似乎我可能能夠通過自己的實例Net::HTTPResponse

回答

2

請求:

post = Net::HTTP::Post.new('http://google.com') 
post.set_form_data :query => 'ruby http' 
sio = StringIO.new 
post.exec si, Net::HTTP::HTTPVersion, post.path 
puts sio.string 

響應:

si = StringIO.new("HTTP/1.1 200 OK\n") 
bio = Net::BufferedIO.new(si) 
Net::HTTPResponse.read_new(bio) 
+0

似乎很接近我使用你提供的響應代碼,但我。當我調用'read_new'時,獲取 - 'NoMethodError:undefined method'關閉?'for nil:NilClass'。特別是當我解析一個沒有body的HTTP響應時。另外,當我有一個沒有標題的字符串時,「標題」是零,而不是我期望的[]。 – makdad

+0

哦,我忘了說 - 謝謝!這使我更加接近。 – makdad

+0

嗯,我想出了第二個問題 - 它是'header',而不是'headers';) – makdad

相關問題