当前位置 : 主页 > 网页制作 > HTTP/TCP >

使用net / http在ruby中执行请求

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在尝试使用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
我正在尝试使用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   = "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证书,这是一个潜在的安全问题.然而,作为一个概念证明,这个片段对我有用 – 所以希望这会为你的调试工作提供一个很好的数据点.

网友评论