这种格式的 POST 请求怎么模拟提交?

2018-06-10 20:22:32 +08:00
 MyFaith
POST http://appapi2.gamersky.com/v2/AllChannelList HTTP/1.1
Content-Type: text/plain; charset=utf-8
Content-Length: 223
Host: appapi2.gamersky.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.3.0

{"os":"android","app":"GSAPP","osVersion":"8.1.0","deviceType":"MI 8","appVersion":"4.1.1","deviceId":"867252032615972","request":{"nodeIds":"16","pageIndex":"1","elementsCountPerPage":"20","parentNodeId":"news","type":""}}
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 5.2
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sun, 10 Jun 2018 11:57:48 GMT
Content-Length: 12975

请求参数中 request 的值是一个 json 对象,如何模拟?所有参数都是 request body 吗?

{"os":"android","app":"GSAPP","osVersion":"8.1.0","deviceType":"MI 8","appVersion":"4.1.1","deviceId":"867252032615972","request":{"nodeIds":"16","pageIndex":"1","elementsCountPerPage":"20","parentNodeId":"news","type":""}}
1738 次点击
所在节点    问与答
4 条回复
ioven
2018-06-10 20:26:49 +08:00
j = {"os":"android","app":"GSAPP","osVersion":"8.1.0","deviceType":"MI 8","appVersion":"4.1.1","deviceId":"867252032615972","request":{"nodeIds":"16","pageIndex":"1","elementsCountPerPage":"20","parentNodeId":"news","type":""}}
r = request.post('http://httpbin.org/post', json=j)
print(r.json())
MyFaith
2018-06-10 20:38:30 +08:00
@ioven 谢谢,成功了,但是这个参数如果用 request body 的话,为什么会失败呢?这些参数是什么参数
Lullaby
2018-06-10 20:39:04 +08:00
跟普通的 post 一样,只是 content-type 是 text/plain,内容放在 body 里,postman 里叫 raw,fiddler 里叫 TextView
chinvo
2018-06-10 20:43:19 +08:00
@Lullaby #3 错了,是 application/json

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/461972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX