场景介绍:
服务端是python2开发的API
客户端是python3调用requests发送post请求
问题:服务端接到的提交数据,报unicode错误
客户端:
requests.post(url, data={"a":1, "b": {"c": 4}}) # 客户端是python2的时候,这种写法是不会报错的
服务器:
b = request.data.get('b') # 没有报错
c = b.get('c') # 报错了
AttributeError: 'unicode' object has no attribute 'get'
由上面看出,python3是把data里的所有内容都默认转成了unicode类型,所以服务端没能解析的了。
解决方法:
import json
requests.post(url, data=json.dumps({"a":1, "b": {"c": 4}}), ,headers={'Content-type': 'application/json'})
服务端就可以正确接收了。