请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

post请求参数是个json,会有各种问题

先说问题:
一个post请求,传参就一个{“province”: “四川省”}
请求头编码格式:content-type:application/json

import requests
import pprint
data = {"province": "四川省"}
url = 'http://192.168.0.95:3000/api/certCard/findCertCardPage'  
def send_post(url, data):
	headers = {"Content-Type": "application/json"}
    res = requests.post(url=url, data=data, headers=headers)
    return res.json()
pprint.pprint(send_post(url, data))

如果data直接使用 {“province”: “四川省”},实际传参是这样的:
province=%E5%9B%9B%E5%B7%9D%E7%9C%81
而且如果不传递编码格式,服务器会直接报服务器异常:
{‘code’: ‘000001’, ‘data’: {}, ‘msg’: ‘服务异常’, ‘status’: False}

这个和老师你说的不一样啊,data部分如果是json实际应该怎么处理?

正在回答 回答被采纳积分+3

1回答

提问者 _静言_ 2020-07-02 14:26:07

如果把data赋值修改成 data = json.dumps({"province": "四川省"})  就能正常获取数据

但是,抓包发现请求的data值是这样的:{"province": "\u56db\u5ddd\u7701"}  进行了转码

0 回复 有任何疑惑可以回复我~
  • 你好这个没有任何关系呀,你如果是json得传递,你header里面指定
    就行。你可以请求数据data更改为json去尝试
    回复 有任何疑惑可以回复我~ 2020-07-02 20:37:57
  • 提问者 _静言_ 回复 Mushishi #2
    发现如果前面data赋值的时候不用json.dumps  在后面函数形参那用json=data也行。怎么改都和老师你的对不上 = =,难道是我的是py3.8的原因?
    回复 有任何疑惑可以回复我~ 2020-07-03 09:51:07
  • Mushishi 回复 提问者 _静言_ #3
    哈哈,这个不一定要和我对上。只告诉你解决问题方法。
    回复 有任何疑惑可以回复我~ 2020-07-03 10:18:50
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信