Python requestsモジュールを使用して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をテストすると、応答ヘッダーに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("''",
))
問題の原因を探しました。おそらく、受信した応答は正しくフォーマットされていません。この問題を処理する方法はありますか?
前もって感謝します。
問題はURLにありました。この接続はhttps経由で確立することを意図しており、pythonスクリプトでhttpを使用していました。したがって、問題が発生しました。
実際に確認しましたが、何が送信されますか?自分で辞書を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)