码迷,mamicode.com
首页 > 编程语言 > 详细

Python报错ConnectionError: connection aborted BadStatusLine解决

时间:2020-09-17 12:58:56      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:屏蔽   abort   返回JSON数据   ted   lan   one   报错   content   浏览器   

问题

云端项目上有一个api通过HTTP/GET请求调用返回json数据
使用Python自带requests库发送GET请求查询数据报错如下

requests.exceptions.ConnectionError: (‘Connection aborted.‘, BadStatusLine(‘HTTP/1.1 0 \r\n‘))

分析

使用Chrome浏览器可以正常显示返回值,F12检察元素查看GET返回Headers内容。

HTTP/1.1 0
Content-Length: 21269
Connection: Keep-Alive
Server: ApiServer

显然Response Headers中status code给错了
看了眼response内容本身没问题
暂时屏蔽status code校验优先对内容进行测试

解决

将status code强制赋值为200抑制错误
溯源response函数得知调用关系为requests -> urllib -> http
重写class比较复杂,直接修改ConnectionError源码位于python/lib/http/client.py > HTTPResponse > _read_status
找到

# The status code is a three-digital number
try:
    status = int(status)

改为

# The status code is a three-digital number
try:
    status = int(status) or 200

OK!测完记得改回来

Python报错ConnectionError: connection aborted BadStatusLine解决

标签:屏蔽   abort   返回JSON数据   ted   lan   one   报错   content   浏览器   

原文地址:https://www.cnblogs.com/azureology/p/13613200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!