2012-05-21 21 views
0

我打电话通过它的http端点(嵌入式码头)的Java服务。该服务以5秒的超时处理异步http请求,并且当我使用url params或curl或py脚本从浏览器调用它时可靠地工作。HTTP请求超时与红宝石(净/ HTTP和其余客户端),但快速卷曲+ py

当我使用net/http或rest-client从ruby脚本调用它时,它超时了一半?!任何想法是什么可能导致这一点,以及可能的解决方案可能是什么(与红宝石)?

我使用红宝石1.9.3-p125和红宝石和python脚本都是< 10行(我通常会从一个较大的代码段进行调用,但小版本也不能工作)。

净/ HTTP

paramStr = "rid=#{rid}&id=#{id}&json=#{json}" 
uri = URI.parse(URI.escape(proxy_server_addr+"?"+paramStr)) 
response = Net::HTTP.get_response(uri) 

其余客户端

resource = RestClient::Resource.new('http://myserver.com:9001', :timeout => 10) 
response = resource["/"].get :params => {:id => id, :rid => rid, :json => json} 

卷曲

curl 'http://myserver:9001/?id=...' 

PY

import urllib2 
print urllib2.urlopen("http://myserver.com:9001?id=...").read() 

enter image description here

回答

0

你太过于复杂了。 urllib2的ruby等价物是open-uri:

require 'open-uri' 
puts open("http://myserver.com:9001?id=...").read 
+0

这很好用。任何想法为什么其他图书馆会超时? – nflacco

+0

是的,从我可以告诉你,你完全错误地使用它们:) – pguardiario

+0

啊!我设法让休息客户端也能工作......但是,远程客户端或休息客户端都不能一致地远程工作。这很奇怪。这里是我的后续问题http://stackoverflow.com/questions/10693959/http-calls-behave-differnent-locally-vs-aws-is-it-ruby-or-aws – nflacco