首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >邮递员POST工作正常;Ruby POST不行。如何调试差异?

邮递员POST工作正常;Ruby POST不行。如何调试差异?
EN

Stack Overflow用户
提问于 2019-05-30 02:38:14
回答 1查看 63关注 0票数 0

我需要对一个API执行POST请求,该API接受一个JSON有效负载,该负载包含一个嵌套的字符串化的JSON对象。我做了一个GET请求来获取字符串,解析它(两次!)要获得散列,请修改一个参数,然后将其发送回来。当我通过邮递员发帖时,它照常通过。当我通过Ruby Rest-Client gem发布相同的字符串时,似乎post通过了,但是有效负载是如何字符串化的存在一个问题,提供了一个不想要的结果。

不幸的是,我不能重构这个设计糟糕的后端。我只能用我所拥有的来工作。

我已经尝试了这段代码的十几种排列。邮件中的所有内容看起来都是正确的,与邮递员的邮件完全相同。

以下是Postman的HTTP实例化,去掉了标识信息:

代码语言:javascript
复制
POST /example/home/api/savesettings HTTP/1.1
Host: dev.noneofyourbusiness.com
Cookie: identification-gui=f4k3-gu1-5tr1n9
Content-Type: application/json

{"settings":"{\"rows\":50,\"columns\":[\"Col1\",\"Col2\",\"Col3\",\"Col4\"],\"sort\":{\"column\":\"Col1\",\"direction\":1},\"filters\":{\"Status\":[\"Active\"]},\"widths\":{\"Id\":\"170px\",\"Description\":\"192px\"}}"}

下面是Ruby代码,目的是做同样的事情:

代码语言:javascript
复制
response = RestClient.get(
        get_url,
        :accept => :json,
        :cookies => {cookie[:name] => cookie[:value]}
    )

hash = JSON.parse(JSON.parse(response))
hash['columns'] = "Col1;Col2;Col3;Col4"
payload = {:settings => hash.to_json}.to_json

RestClient.post(
        post_url,
        payload,
        :content_type => :json,
        :cookies => {cookie[:name] => cookie[:value]}
    )

Postman请求正确地设置了列。Ruby请求似乎清除了所有设置,使我相信JSON的格式不正确,但我不确定。

调试时,Postman body/Rest-Client有效负载看起来是一样的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 03:37:14

在用头撞桌子一周后,我意识到我需要做的就是添加

代码语言:javascript
复制
.split(";")

在我的专栏的末尾。现在一切都正常了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56366678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档