发布请求错误 - Ruby和HTTParty

时间:2015-07-14 08:56:13

标签: ruby json httparty

我试图使用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

1 个答案:

答案 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提供解决此问题的线索。