如何在Rails 6中使用HTTParty?POST请求无数据问题求助
解决Rails中HTTParty POST请求服务器收不到数据的问题
嘿,作为过来人,我一眼就看到你代码里的两个小问题——这都是用HTTParty发JSON请求时新手常踩的坑,难怪服务器收不到数据!
问题分析
你用Postman发JSON能成功,但自己的代码不行,核心原因是请求格式和头部设置错了:
- 第一个坑:你把
headers选项嵌套到body哈希里面了!HTTParty的post方法里,headers是和body平级的参数,不是body的一部分。这样服务器根本没收到你设置的Content-Type: application/json头,自然不会按JSON格式解析请求体。 - 第二个坑:就算头部设置对了,直接传Ruby哈希作为
body的话,HTTParty默认会把它转成application/x-www-form-urlencoded格式(也就是表单格式),而不是纯JSON字符串。这和你Postman里发的请求格式完全不一样,服务器当然认不出来。
修正后的代码
把这两个问题改了就好,看下面的代码:
def send_information HTTParty.post( "https://example.com/api/json.php", body: { user: 'Nancy Cole', item: 'mobile phone', content: 'Hurray the server has received your message', id: 2 }.to_json, # 把Ruby哈希转换成标准JSON字符串 headers: { 'Content-Type' => 'application/json' } # 把headers放到正确的位置 ) end
额外小技巧
如果之后再遇到类似问题,可以打印请求的详细信息来排查:
response = HTTParty.post(...) puts response.request.inspect # 查看请求的头部、体内容等细节
这样能直观看到实际发送的请求是不是和Postman里的一致。
内容的提问来源于stack exchange,提问作者Geni
相关产品推荐
相关产品推荐

