【发布时间】:2015-02-12 07:58:11
【问题描述】:
我正在使用以下代码运行几个 HTTP 请求,但第二个请求 (req2) 总是返回到 errback。
我在这里遗漏了什么明显的东西吗?
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很草率并修改了它给出的选项哈希(然后你将修改后的哈希传递给你的下一个调用,以为它就像你设置它一样,但实际上它是不同的)。 -
感谢您的回答。我刚刚试过了,但它仍然返回 errback。
-
太糟糕了,如果它那么容易就好了(但我认为这不是一个正确的答案,因此评论)。
标签: ruby eventmachine