1、在使用requests发送请求,响应数据转成json提示,没有可解码的json
解决办法:
这是由于,发送请求的数据,存在错误,响应出错比如404 400,所以找不到可以解码的json
示例如下:
postdata = ‘‘‘{‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘}‘‘‘ url = ‘https://secure.elong.com/passport/ajax/elongLogin‘ response = Session().post(url,data=postdata) print(response.json())
其实从图上很明显能看出问题,因为postdata是字符串类型,不是dict字典
如上图代码如果执行报如下错误:
解决办法,eval()函数将字符串,转换成字典;如下所示
postdata = ‘‘‘{‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘}‘‘‘ url = ‘https://secure.elong.com/passport/ajax/elongLogin‘ request = Session().post(url,data=eval(postdata)) print(request.json())
有人可能会说,你这不是多此一举吗?把postdata直接定义成字典不就行了;你说的没错确实可以这样
postdata = {‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘} url = ‘https://secure.elong.com/passport/ajax/elongLogin‘ request = Session().post(url,data=postdata) print(request.json())
但是如果以下这串数据,存储在数据库中,或者excel中,读出来的时候默认就是字符串,如果读出来直接使用就会出现本文的错误,
所以哪里错了这个要知道,这是一个小细节;调试输出,发现输出跟以下是一样的,
没有错呀这是字典呢{‘xxxx‘:‘xxx‘..........},但是它就是字符串。容易被忽略,所以还要使用eval(postdata)函数转成字典
{‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘}
正确代码:
postdata = ‘‘‘{‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘}‘‘‘ url = ‘https://secure.elong.com/passport/ajax/elongLogin‘ request = Session().post(url,data=eval(postdata)) print(request.json())
------------------------------我是华丽的分隔线----------------------------------
2、
时间: 2024-10-11 00:10:46