在 ruby 中正确构建 http get 请求
Properly build http get request in ruby
我想使用 ruby 从 API 请求用户信息,所以我正在关注这个 ruby http 作弊 sheet:
http://augustl.com/blog/2010/ruby_net_http_cheat_sheet/
这是我目前使用的:
#!/usr/bin/ruby
require "net/http"
require "uri"
uri = URI.parse("https://cirrus.app47.com/api/users/obfuscated_userID")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
request.initialize_http_header({"X-Token" => "obfuscated-TokenString"})
request.initialize_http_header({"Accept" => "application/json"})
response = http.request(request)
puts response.to_s
打印响应给了我 #<Net::HTTPBadRequest:0x007fe37cac2da0>
那么我在构建或执行请求时做错了什么?
你可能想打电话给 response.body
您可以找到 Net::HTTPResponse here
的文档
尝试使用 http
协议而不是 https
发出请求:
uri = URI.parse("http://cirrus.app47.com/api/users/obfuscated_userID")
然后,它应该按预期工作。
此外,尝试像这样检查 response
和 response body
:
response = http.request(request)
puts response.inspect
puts response.body.inspect
然后,获取您需要的数据:-)
2 项缺失:
- 声明正在使用 ssl
- 正确的header规范
解决方法如下:
uri = URI.parse("https://cirrus.app47.com/api/users/obfuscated_userID")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
request['X-Token'] = "obfuscated-APIToken"
request['Accept'] = "application/json"
response = http.request(request)
我想使用 ruby 从 API 请求用户信息,所以我正在关注这个 ruby http 作弊 sheet:
http://augustl.com/blog/2010/ruby_net_http_cheat_sheet/
这是我目前使用的:
#!/usr/bin/ruby
require "net/http"
require "uri"
uri = URI.parse("https://cirrus.app47.com/api/users/obfuscated_userID")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
request.initialize_http_header({"X-Token" => "obfuscated-TokenString"})
request.initialize_http_header({"Accept" => "application/json"})
response = http.request(request)
puts response.to_s
打印响应给了我 #<Net::HTTPBadRequest:0x007fe37cac2da0>
那么我在构建或执行请求时做错了什么?
你可能想打电话给 response.body
您可以找到 Net::HTTPResponse here
的文档尝试使用 http
协议而不是 https
发出请求:
uri = URI.parse("http://cirrus.app47.com/api/users/obfuscated_userID")
然后,它应该按预期工作。
此外,尝试像这样检查 response
和 response body
:
response = http.request(request)
puts response.inspect
puts response.body.inspect
然后,获取您需要的数据:-)
2 项缺失:
- 声明正在使用 ssl
- 正确的header规范
解决方法如下:
uri = URI.parse("https://cirrus.app47.com/api/users/obfuscated_userID")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri.request_uri)
request['X-Token'] = "obfuscated-APIToken"
request['Accept'] = "application/json"
response = http.request(request)