我使用下面的代码来运行几个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