我使用下面的代碼來運行幾個HTTP請求,但第二個請求(req2)總是返回到errback。EventMachine :: HttpRequest和Keep-alive連接
我失去的東西在這裏很明顯?
request_options = {
:body => " ",
:keepalive => true,
:head => {
'content-type' => 'application/json',
'accept' => 'application/json',
'Accept-Encoding' => 'gzip,deflate,sdch'
}
}
EM.run do
request_options[:path] = '/default/path'
conn = EM::HttpRequest.new 'https://www.example.com'
req1 = conn.post request_options
req1.errback { p 'Uh, oh'; EM.stop }
req1.callback do
doc = JSON.parse req1.response
# do stuff with doc
request_options[:body] = 'post-data'
request_options[:path] = '/new/path'
req2 = conn.post request_options
req2.errback { p 'Uh, oh'; EM.stop }
req2.callback do
puts req2.response
EM.stop
end
end
end
您可以嘗試的一件快速事情是爲兩個請求使用'request_options'哈希的不同副本。這可能是因爲'EM :: HttpRequest'是馬虎,修改了它給出的選項哈希值(然後將修改後的哈希值傳遞給下一次調用,認爲它就像您設置的那樣,實際上它不同)。 – Theo
感謝您的回答。我剛剛嘗試過,但仍然返回到errback。 – pkhamre
太糟糕了,如果真的那麼簡單(但我認爲這不是一個正確的答案,因此評論)會很好。 – Theo