1. 一般都是向主机发出未经验证的 HTTPS 请求,所以需要关闭校验 verify=False,
response = requests.post(url, data=params, verify=False)
2. 即使使用了verify=False,但在执行时会发现取不到数据,只看到有一个Warning内容
警告示例:urllib3\connectionpool.py:1045: InsecureRequestWarning: Unverified HTTPS request is being made to host.., 因为requests默认开启了这个Warning警告内容,可在执行post请求之前添加如下这行代码关闭警告即可:
requests.packages.urllib3.disable_warnings()
3. 响应内容的编码问题
编码错误示例:UnicodeDecodeError:'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
可能是编码转换出了问题,现在一般都是utf8编码,确定请求时的Content-Type为: application/json;charset=utf-8,另外在执行decode()方法的第二个参数errors默认为严格(strict)形式会造成此类错误,使用如下代码进行解码:
response.content.decode('utf8', 'ignore')
4. 响应内容的压缩问题
在读取响应内容时,怎么进行处理都报错,然后在apipost工具中进行请求测试,发现其响应头中有一个content-encoding:gzip内容,在浏览器或者这类工具中中请求默认都是使用accept-encoding = gzip, deflate, br,因为浏览器等工具会对内容进行解压缩,但在接口请求时并不能自行解压缩。因此执行post请求时要在header中添加accept-encoding并且设置值为空。本文地址:http://www.04007.cn/article/1218.html,未经许可,不得转载.
response = requests.post( url=url, data=params, # 也可用json verify=False, headers={ 'Content-Type': 'application/json;charset=utf-8', 'accept-encoding': '' } )本文地址:http://www.04007.cn/article/1218.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/1218.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |