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