【发布时间】:2026-01-24 14:40:02
【问题描述】:
我正在尝试使用提供的 API 与 Ruby 2.0.0 和 Rails 4.0.0 从 imgur 中提取图像。我尝试以 Ruby 2.0.0 文档中列出的各种方式构建 http 请求,但均无济于事。
代码如下:
require 'net/http'
require 'net/https'
def imgur
headers = {
"Authorization" => "Client-ID " + my_client_id
}
path = "/3/gallery/image/#{img_id}.json"
uri = URI("https://api.imgur.com"+path)
request, data = Net::HTTP::Get.new(path, headers)
response = Net::HTTP.new(uri.host, uri.port).start {|http| http.request(request) }
puts "response:"
p response
puts response
end
其中img_id 和my_client_id 只是用适当的值硬编码。 (imgur 方法在与我网站的根 url 对应的控制器操作中调用)
这是我在运行 rails s(所以我使用 localhost:3000)然后访问根 URL localhost:3000(它确实调用了调用 imgur 的操作)时得到的响应:
#<Net::HTTPBadRequest 400 Bad Request readbody=true>
#<Net::HTTPBadRequest:0x007f8a6ce0da78>
更新:
另外,这有效:
curl --header "Authorization: Client-ID my_client_id" @987654321@
(同样,my_client_id 是用我的实际客户端 ID 硬编码的)。现在让它在 Ruby 上工作......
有人知道正确的做法吗?
【问题讨论】:
-
如果你使用 curl 或 wget 和这些参数,它是否有效?
-
这有效:$ curl --header "Authorization: Client-ID XXXXXXXXX" api.imgur.com/3/gallery/7x98w9T.json 其中 X 是我的客户 ID...imgur 图像 ID 是我随机挑选的图像的 ID
-
在上面的评论中我的意思是输入 api.imgur.com/3/gallery/image/7x98w9T.json (尽管我测试了我在上面的评论中实际写的内容,它也可以工作...... )
-
可能是因为它是
https? *.com/questions/5786779/… -
@VladtheImpala,这是 https!我认为给 uri 一个以 https 开头的字符串可以解决问题,但它实际上并没有使用 SSL。让它工作!
标签: ruby-on-rails ruby imgur