卷曲工作但 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'})

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

正如我在评论中所说的那样,您使用 --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/