您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python请求模块发送JSON字符串而不是x-www-form-urlencoded参数字符串

Python请求模块发送JSON字符串而不是x-www-form-urlencoded参数字符串

获得JSON的原因是因为您显式调用json.dumps生成JSON字符串。只是不这样做,您就不会得到JSON字符串。换句话说,将第一行更改为:

data = {'param1': 'value1', 'param2': 'value2'}

正如文档所解释的,如果将dict作为data值传递,它将以形式编码,而如果传递字符串,则将按原样发送。

例如,在一个终端窗口中:

$ nc -kl 8765

在另一个

$ python3
>>> import requests
>>> d = {'spam': 20, 'eggs': 3}
>>> requests.post("http://localhost:8765", data=d)
^C
>>> import json
>>> j = json.dumps(d)
>>> requests.post("http://localhost:8765", data=j)
^C

在第一个终端中,您将看到第一个请求主体是this(和Content-Type application/x-www-form-urlencoded):

spam=20&eggs=3

…而第二个是这个(并且没有Content-Type):

{"spam": 20, "eggs": 3}
python 2022/1/1 18:35:29 有239人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶