Завиток работает, но запросы / сеансы Python выдают ошибку 404 - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь получить доступ к InfluxDB из коробки Linux. Когда я использую команду CURL, я могу получить детали базы данных -

curl http://xx.xxx.xx.xxx:8086/query --data-urlencode "q=SHOW DATABASES"
{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["ExampleDatabase"]]}]}]}

Когда то же самое пытаются использовать Requests Python, я получаю 404 страницу не найдена

import requests
shorturl = 'http://xx.xxx.xx.xxx:8086/query --data-urlencode "q=SHOW DATABASES"'
r = requests.get(shorturl)
print (r.text)

Есть ли что-нибудь, что нужно передать, чтобы заставить его работать с Python. Когда я пытаюсь нажать URL - http://xx.xxx.xx.xxx:8086/query --data-urlencode "q = SHOW DATABASES" в браузере, я получаю сообщение 404. Работает Telnet с Linux на ящик, где размещен InfluxDB.

Python v2.7.5. Я перепробовал все возможные способы, данные через Интернет, но ни один из них не сработал.

Просьба уточнить

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Как я уже говорил в комментариях, ваш короткий URL с --data-urlencode, который является правильным для curl, недопустим для запросов Python, пожалуйста, попробуйте это,

payload = {'q': 'SHOW DATABASES'}
shorturl = 'http://xx.xxx.xx.xxx:8086/query'
r = requests.get(shorturl, params=payload)
print (r.text)

, вы можете узнать больше озапрос здесь http://docs.python -requests.org / ru / master / user / quickstart /

0 голосов
/ 12 сентября 2018

- data-urlencode - это опция curl для передачи параметров POST в ваш HTTP-запрос.

Вы должны использовать соответствующий метод с запросом, чтобы получить то же поведение.--data-urlencode недопустим в python

Это может работать:

import requests
shorturl = 'http://xx.xxx.xx.xxx:8086/query'
r = requests.post(shorturl, data={'q': 'SHOW DATABASES'})

См. https://www.w3schools.com/tags/ref_httpmethods.asp

...