如何在ruby中的http请求中包含标头

时间:2016-07-05 19:21:21

标签: ruby-on-rails ruby http httprequest net-http

让以下代码正常工作:

uri = URI.parse("http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/")
response = Net::HTTP.get_response(uri)

现在我还需要在其中传递带有此令牌哈希的标头:

token: "fjhKJFSDHKJHjfgsdfdsljh"

我找不到有关如何执行此操作的任何文档。我该怎么做?

2 个答案:

答案 0 :(得分:4)

当你需要更多控制时,

get_response是提出请求的简写 - 自己做一个完整的请求。

ruby​​标准库here中有一个例子:

uri = URI.parse("http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/")
req = Net::HTTP::Get.new(uri)
req['token'] = 'fjhKJFSDHKJHjfgsdfdsljh'

res = Net::HTTP.start(uri.hostname, uri.port) {|http|
  http.request(req)
}

答案 1 :(得分:1)

虽然你肯定可以使用Net::HTTP来实现这一目标,但gem excon可以让您更轻松地完成这项工作:

require 'excon'
url = 'http://www.ncdc.noaa.gov/cdo-web/api/v2/datasets/'
Excon.get(url, headers: {token: 'fjhKJFSDHKJHjfgsdfdsljh'})