Python報錯ConnectionError: connection aborted BadStatusLine解決


問題

雲端項目上有一個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!測完記得改回來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM