1

我正在尽我所能从 instagram API 中获取 JSON。这是我在 Rails 中的 rake 任务中尝试的代码。

require 'net/http'


url = "https://api.instagram.com/v1/tags/snow/media/recent?access_token=522219.f59def8.95be7b2656ec42c08bff8a159a43d06f"
resp = Net::HTTP.get_response(URI.parse(url))
puts resp.body

我最终在终端中得到的只是“rake 中止!到达文件结尾”

如果您查看 instagram 文档http://instagram.com/developer/endpoints/tags/并将以下 URL 粘贴到浏览器中,您将获得 JSON,所以我确定我做错了什么。

https://api.instagram.com/v1/tags/snow/media/recent?access_token=522219.f59def8.95be7b2656ec42c08bff8a159a43d06f

4

2 回答 2

4

它与 HTTPS url 有关,您需要修改代码以包含 SSL

require "net/https"
require "uri"

uri = URI.parse("https://api.instagram.com/v1/tags/snow/media/recent?access_token=522219.f59def8.95be7b2656ec42c08bff8a159a43d06f")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(uri.request_uri)

response = http.request(request)
puts response.body

或者,您可以使用诸如https://github.com/jnunemaker/httparty之类的东西 来使用 3rd 方服务

于 2012-08-02T20:18:24.537 回答
1

看起来您需要配置 net/http 以使用 SSL,因为您使用的是 https。

替代方案:将它与 Rails 一起使用,它也会动态解析 json:

ActiveSupport::JSON.decode(open(URI.encode(url)))

返回要使用的哈希

于 2012-08-02T20:18:10.163 回答