无法用http ruby​​ gem制作api请求

时间:2016-12-16 15:08:38

标签: ruby api http curl request

我正在尝试使用http gem将我在终端中工作的curl请求转换为ruby代码。

这是卷曲请求,它让我回到我想要的有效json:

curl -X GET --header 'Accept: application/json' --header 'api_key: somekey' --header 'authtoken: sometoken' 'https://cdn.domain.io/v3/content_types/shirts/entries?environment=dev'

使用http gem我尝试在我的ruby脚本中执行此操作:

HTTP.headers(:Accept => "application/json", :api_key => 'somekey', :authtoken => 'sometoken').get("https://cdn.domain.io/v3/content_types/shirts/entries", :params => { :environment => 'dev'}).body.readpartial

这会从服务器

返回"api_key":["is not valid."]}错误

我做错了什么?我如何让它工作?

1 个答案:

答案 0 :(得分:0)

Typhoeus似乎运作良好:

require "typhoeus"
require 'multi_json'
require "awesome_print"

response = Typhoeus::Request.new(
  "https://api.domain.io/v3/content_types/shirts/entries?environment=dev",
  headers: { api_key: "somekey", access_token: "sometoken",
  accept_encoding: "gzip" }
).run

# puts response.body
begin
  ap MultiJson.load(response.body, :symbolize_keys => true)
rescue MultiJson::ParseError => exception
  p exception.data # => "{invalid json}"
  p exception.cause # => JSON::ParserError: 795: unexpected token at '{invalid json}'
end