代码之家  ›  专栏  ›  技术社区  ›  sdgd

Curl工作,但Python请求/会话给出404错误

  •  0
  • sdgd  · 技术社区  · 7 年前

    我正在尝试从远程访问XDB Linux

    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 404页未找到

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

    有什么东西必须通过Python才能让它工作。当我尝试点击网址时- http://xx.xxx.xx.xxx:8086/query 在浏览器中,我得到404信息。Telnet从Linux box到xdb所在的box正在工作。

    请澄清

    2 回复  |  直到 7 年前
        1
  •  1
  •   Radan    7 年前

    正如我在评论中所说的,您的短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/en/master/user/quickstart/

        2
  •  1
  •   Corentin Limier    7 年前

    --dataurlencode是一个curl选项,用于将POST参数传递给HTTP请求。

    这可能适用于:

    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