我试图使用ruby和httparty gem做一个简单的帖子请求,但我不断收到401(未授权)或500(内部服务器)作为回应。我已成功在Chrome扩展程序--DHC(Dev Http客户端)上测试了该请求,该请求始终返回200个响应。
我的剧本:
require "json"
require "httparty"
file = JSON.parse File.read('file.json')
response = HTTParty.post("https://api.placeholder/uri", {
:body => file,
:headers => { "Content-Type" => "application/json", "Accept" => "application/json", "Authorization" => "token example-placeholder-token" }
})
puts response.body
puts response.code
puts response.message
返回的两个错误是:
➜ directory ruby file.rb
{"valid":false}
401
Unauthorized
➜ directory ruby file.rb
{"valid":false}
500
Internal Server Error
答案 0 :(得分:1)
为了更简单的帖子请求进行调试,你必须小心使用ruby发送/接收json(在使用html时你可能遇到传统的ajax方法的麻烦)。因此,更容易为其提供最“不可知”的文件格式 - 文本(或字符串),以及最通用的键/值对格式,我认为是这样的:application/x-www-form-urlencoded
这终于在控制台中给了我一个有效的200响应(n.b.不是我原来的请求有点复杂 - 但仍然是“概念证明”):
require "json"
require "httparty"
response = HTTParty.post("https://api.placeholder-uri",
{
:body => { :user => "placehodler-username", :password => "placeholder-password" }.to_json,
:headers => { "Content-Type" => "text", "Accept" => "application/x-www-form-urlencoded" }
})
puts response.body
puts response.code
puts response.message
感谢这个ajax教程:https://www.airpair.com/js/jquery-ajax-post-tutorial提供解决此问题的线索。