2012-05-21 22 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