我正在尝试使用供应商的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"}
我的语法有问题吗?我不知道为什么说电子邮件丢失了。
答案 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字符串。)