Ответ 1
Проблема была связана с URL. Это соединение должно было быть установлено через https, и я использовал http в python script. Отсюда проблема.
Я пытаюсь использовать модуль запросов Python для выдачи команд Http GET для доступа к некоторым API на основе REST. URL-адреса работают на RESTClient, но когда я использую один и тот же URL-адрес в python, я получаю ошибку подключения.
Код, который я пытаюсь выполнить, это:
payload={"mac":new_mac,"token":token}
userloginurl="http://192.168.1.40:9119/uid"
r=requests.get(userloginurl,params=payload)
print(r.url)
Если я тестирую этот URL-адрес с помощью RESTClient, я получаю код состояния 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, и я использовал http в python script. Отсюда проблема.
Вы действительно проверили, что получает по проводам? Возможно, вам придется конвертировать словарь в строку 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)