Ruby Net::HTTP 中 HTTPS 使用超时问题

carl · 2012年01月31日 · 最后由 ruby_sky 回复于 2012年04月22日 · 5188 次阅读

按照 ruby doc 中的示例,运用 Net::HTTP 中 HTTPS 访问下述 uri 地址,代码如下,但总是得到 “Connection timed out - connect(2)”的错误,大家知道是什么原因吗?谢谢!

ps:这个 uri 其实是 windows live connect 的 REST API 的调用网址,在浏览器上可以正确打开,返回的是 JSON 数据,可以正常显示,但是下述的 ruby 代码却不好使。。是哪里写错了吗?

uri = URI(`https://apis.live.net/v5.0/me?access_token=EAX.../token for short /AAA=`)
Net::HTTP.start(uri.host, uri.port, 
  :use_ssl => uri.scheme == 'https') do |http|
  response = Net::HTTP.get_response(uri)
  puts "*****************************"
  puts response.body
  puts "*****************************"
end
ACCESS_TOKEN_URI =    'https://apis.live.net/v5.0/me'
params = { :access_token => token }  
uri = URI.parse(ACCESS_TOKEN_URI)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl =  uri.scheme == 'https'

request = Net::HTTP::Post.new(uri.path)
request.set_form_data(params)
http.request(request).body

上面是根据自己以前的一段代码的修改。希望对你能有所帮助。

@sandy_xu 谢谢!我试试~

@sandy_xu 你之前写的也是 live connect 的这个吗?我参考的这里的文档 http://msdn.microsoft.com/en-us/library/hh243649.aspx 上面写的是:make an HTTP GET call to the Live Connect REST API to get user info,不是应该用 get 方法吗?要怎么改才好呢?谢谢!

你的这个问题在于 https 的访问,我以前写的是 qq 登陆链接的接口,也是 https 问题。上面的代码 qq api 可以接收。所以可以借鉴.如果返回 必须 GET,再修改下。

#3 楼 @carl 不知 carl 这个问题最后的解决方案是?我也遇到同样的问题。

这个问题大部分原因是因为对方的服务器挂了,或者那个网页挂了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号