400使用Rest Client调用Ruby on Rails应用程序时出错

时间:2017-02-02 19:16:19

标签: ruby-on-rails ruby api rest-client

我正在尝试使用供应商的API进行身份验证,但我一直收到400错误。请注意,它的“模拟服务器”工作正常

我的代码是:

def perform(*args)
    require 'rest_client'

    values = {"email": "not_telling@hotmail.com",
      "password": ENV['PASSWORD']
    }

    headers = {
      :content_type => 'application/json',
      :accept => 'application/json'
    }

    body = begin
      RestClient.post 'https://beta.b2bapi.trevcoinc.com/api/v1/login', values, headers
      rescue => e
      e.response.body
    end
    fb_response = JSON.parse(body)

  end

我得到的回应是

{"error"=>"Email is missing!", "status"=>"400"} 

我的语法有问题吗?我不知道为什么说电子邮件丢失了。

编辑:https://beta.b2bapi.trevcoinc.com/#documentation/的API文档

2 个答案:

答案 0 :(得分:0)

很难说出问题出在哪里,也许你没有发送正确的有效载荷格式/结构(我无法访问文档的链接,它提示我进行身份验证)。

当我使用RestClient时,我更喜欢详细的格式,所以我可以看到/控制到底发生了什么:

headers = {
  'Content-Type' => 'application/json'
}
url = "https://api.vimeo.com/me/videos"
body = {
  "some" => "content"
}
res = RestClient::Request.execute(method: :post, url: url, headers: headers, payload: body.to_json)

试试吗?

答案 1 :(得分:0)

您好像没有将values哈希序列化为JSON。遗憾的是,Rest Client并不直接理解JSON,因此即使您设置了内容类型,它也会使用application/x-www-form-urlencoded编码将您的有效负载哈希值编码为字符串。

您是否尝试过values.to_json? (这显式编码为JSON字符串。)