首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Net::HTTP获取请求时出错

使用Net::HTTP获取请求时出错
EN

Stack Overflow用户
提问于 2013-09-27 11:19:52
回答 2查看 1.2K关注 0票数 0

我对红宝石很陌生。我有下面的代码片段,它执行GET操作并检索我的facebook组的名称

代码语言:javascript
复制
def get_groups
  query=("SELECT gid,name FROM group where gid in(SELECT gid from group_member where uid=me)")
  uri=URI("https://graph.facebook.com/fql")
  params={'q'=>query,'access_token'=>TOKEN}
  uri.query=URI.encode_www_form(params)
  response=Net::HTTP.get_response(uri)
  result=json.loads(response.text)
  return result['data']
end

但是,当我执行上述代码时,会得到以下错误:

代码语言:javascript
复制
/usr/lib/ruby/1.9.1/net/protocol.rb:141:in `read_nonblock': Connection reset by peer (Errno::ECONNRESET)
    from /usr/lib/ruby/1.9.1/net/protocol.rb:141:in `rbuf_fill'
    from /usr/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
    from /usr/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
    from /usr/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
    from /usr/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
    from /usr/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
    from /usr/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
    from /usr/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
    from /usr/lib/ruby/1.9.1/net/http.rb:1293:in `request'
    from /usr/lib/ruby/1.9.1/net/http.rb:1195:in `request_get'
    from /usr/lib/ruby/1.9.1/net/http.rb:455:in `block in get_response'
    from /usr/lib/ruby/1.9.1/net/http.rb:745:in `start'
    from /usr/lib/ruby/1.9.1/net/http.rb:454:in `get_response'
    from fb.rb:12:in `get_groups'
    from fb.rb:32:in `<main>'

我在这里犯的错误是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-21 20:53:45

我相信这里的问题是您正在使用HTTP库来访问HTTPS服务。这些都是根本不同的东西。下面是一个HTTPS示例:

代码语言:javascript
复制
require 'net/http'
require 'net/https'
http = Net::HTTP.new('www.example.com', 443)
http.use_ssl = true
http.ssl_version = :TLSv1
http.ciphers = "ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:-LOW"
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
req = Net::HTTP::Get.new('/', {'Content-Type' =>'application/json'})
http.start {|http| http.request(req) }
票数 2
EN

Stack Overflow用户

发布于 2013-09-27 13:46:17

似乎您有SSL证书验证问题。尝试关闭SSL验证。

代码语言:javascript
复制
Net::HTTP.verify_mode = OpenSSL::SSL::VERIFY_NONE

如果上面的内容对您有帮助,那么问题的根源可能是当前的OpenSSL安装。尝试将其更新为最新版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19049444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档