卷曲工作但 Python Requests/Sessions 给出 404 错误
Curl Working but Python Requests/Sessions gives 404 error
我正在尝试从 Linux
盒子远程访问 InfluxDB。当我使用 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 消息。从 Linux 框远程登录到托管 InfluxDB 的框正在工作。
Python v2.7.5。我尝试了互联网上提供的所有可能方法,但其中 none 行得通。
请澄清
--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'})
正如我在评论中所说的那样,您使用 --data-urlencode 的简短 url 对 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/en/master/user/quickstart/
我正在尝试从 Linux
盒子远程访问 InfluxDB。当我使用 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 消息。从 Linux 框远程登录到托管 InfluxDB 的框正在工作。
Python v2.7.5。我尝试了互联网上提供的所有可能方法,但其中 none 行得通。
请澄清
--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'})
正如我在评论中所说的那样,您使用 --data-urlencode 的简短 url 对 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/en/master/user/quickstart/