Python requests.exception.ConnectionError: connection aborted "BadStatusLine"
Python requests.exception.ConnectionError: connection aborted "BadStatusLine"
我正在尝试使用 Python 请求模块发出 Http GET 命令来访问一些基于 REST 的 API。 url 在 RESTClient 上工作正常,但是当我在 python 中使用相同的 url 时,出现连接错误。
我要执行的代码是:
payload={"mac":new_mac,"token":token}
userloginurl="http://192.168.1.40:9119/uid"
r=requests.get(userloginurl,params=payload)
print(r.url)
如果我使用 RESTClient 测试此 url,我会在响应 header 中收到 200 OK 状态代码以及更多字段。
但这不适用于 python 请求。错误回溯如下所示:
Traceback (most recent call last):
File "getAPids.py", line 34, in <module>
r=requests.get(userloginurl,params=payload)
File "C:\Users\garvitab\python\lib\site-packages\requests\api.py", line 65, in
get
return request('get', url, **kwargs)
File "C:\Users\garvitab\python\lib\site-packages\requests\api.py", line 49, in
request
response = session.request(method=method, url=url, **kwargs)
File "C:\Users\garvitab\python\lib\site-packages\requests\sessions.py", line 4
61, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\garvitab\python\lib\site-packages\requests\sessions.py", line 5
73, in send
r = adapter.send(request, **kwargs)
File "C:\Users\garvitab\python\lib\site-packages\requests\adapters.py", line 4
15, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''",
))
我查找了问题的原因。可能收到的响应格式不正确。有办法解决这个问题吗?
提前致谢。
您是否真的检查过,通过网络发送的是什么?我想您可能必须自己将字典转换为 JSON 字符串,或者使用 json=
关键字而不是 payload=
。有关详细信息,请参阅 http://docs.python-requests.org/en/latest/user/quickstart/#custom-headers。这可能会奏效:
import json
payload = json.dumps({"mac":new_mac,"token":token})
userloginurl = "http://192.168.1.40:9119/uid"
r = requests.get(userloginurl, data=payload)
print(r.url)
问题出在 url。此连接旨在通过 https 建立,我在 python 脚本中使用了 http。因此问题。
我遇到了同样的错误,并为此花费了数小时。我发现您无法使用“Localhost”在客户端中调用烧瓶服务器。它必须是“127.0.0.1”
#server
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run(debug=True)
现在导致错误的客户端:
#client
import requests
x = requests.get('http://localhost:5000') # change it to 127.0.0.1
print(x.text)
我正在尝试使用 Python 请求模块发出 Http GET 命令来访问一些基于 REST 的 API。 url 在 RESTClient 上工作正常,但是当我在 python 中使用相同的 url 时,出现连接错误。
我要执行的代码是:
payload={"mac":new_mac,"token":token}
userloginurl="http://192.168.1.40:9119/uid"
r=requests.get(userloginurl,params=payload)
print(r.url)
如果我使用 RESTClient 测试此 url,我会在响应 header 中收到 200 OK 状态代码以及更多字段。
Traceback (most recent call last):
File "getAPids.py", line 34, in <module>
r=requests.get(userloginurl,params=payload)
File "C:\Users\garvitab\python\lib\site-packages\requests\api.py", line 65, in
get
return request('get', url, **kwargs)
File "C:\Users\garvitab\python\lib\site-packages\requests\api.py", line 49, in
request
response = session.request(method=method, url=url, **kwargs)
File "C:\Users\garvitab\python\lib\site-packages\requests\sessions.py", line 4
61, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\garvitab\python\lib\site-packages\requests\sessions.py", line 5
73, in send
r = adapter.send(request, **kwargs)
File "C:\Users\garvitab\python\lib\site-packages\requests\adapters.py", line 4
15, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''",
))
我查找了问题的原因。可能收到的响应格式不正确。有办法解决这个问题吗?
提前致谢。
您是否真的检查过,通过网络发送的是什么?我想您可能必须自己将字典转换为 JSON 字符串,或者使用 json=
关键字而不是 payload=
。有关详细信息,请参阅 http://docs.python-requests.org/en/latest/user/quickstart/#custom-headers。这可能会奏效:
import json
payload = json.dumps({"mac":new_mac,"token":token})
userloginurl = "http://192.168.1.40:9119/uid"
r = requests.get(userloginurl, data=payload)
print(r.url)
问题出在 url。此连接旨在通过 https 建立,我在 python 脚本中使用了 http。因此问题。
我遇到了同样的错误,并为此花费了数小时。我发现您无法使用“Localhost”在客户端中调用烧瓶服务器。它必须是“127.0.0.1”
#server
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run(debug=True)
现在导致错误的客户端:
#client
import requests
x = requests.get('http://localhost:5000') # change it to 127.0.0.1
print(x.text)