我正在尝试使用net / http来获取基于我挖掘 https://github.com/jurisgalang/facebook/blob/master/lib/facebook/graph-object.rb#L22的旧库的API调用的响应 require 'net/http'API_HOST = "graph.facebook.com"API_BASE_URL = "http
          require 'net/http'
API_HOST       = "graph.facebook.com"
API_BASE_URL   = "https://#{API_HOST}"
path           = "/boo"
uri            = URI.parse "#{API_BASE_URL}#{path}"
http           = Net::HTTP.new(uri.host, uri.port)
res            = http.get(uri.request_uri, nil) 
 uri最终为< URI :: HTTPS:0x0000010091fc48 URL:https://graph.facebook.com/boo\u0026gt; 这导致了
NoMethodError: undefined method `keys’ for nil:NilClass
我认为这是因为dest参数已经过时了:http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTP.html#method-i-get
所以我没有做到
res = http.get(uri.request_uri)
结果如何
NoMethodError: undefined method `empty?’ for
#<URI::HTTPS:0x0000010091fc48 URL:https://graph.facebook.com/boo>
如何使用net / http和http.get请求响应?
只是快速浏览一下 the documentation,获得的第二个参数是一个哈希,你传递的是零,请参阅:http.get(uri.request_uri, nil)
你的第二次尝试应该没问题,虽然我确实发现我的设置(ruby 1.9.3和MacPorts的openssl库)Net :: HTTP拒绝了Facebook的ssl证书(我得到了“通过peer重置连接”.以下代码片段为我工作:
require 'net/http'
API_HOST       = "graph.facebook.com"
API_BASE_URL   = "https://#{API_HOST}"
path           = "/boo"
uri            = URI.parse "#{API_BASE_URL}#{path}"
http           = Net::HTTP.new(uri.host, uri.port)
http.use_ssl   = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
res            = http.get(uri.request_uri)
puts res.body 
 请注意,我没有验证SSL证书,这是一个潜在的安全问题.然而,作为一个概念证明,这个片段对我有用 – 所以希望这会为你的调试工作提供一个很好的数据点.
