【问题标题】:POST request returns 404 while GET doesn'tPOST 请求返回 404 而 GET 不返回
【发布时间】:2020-01-21 09:08:48
【问题描述】:

当我执行 GET 请求时,一切正常,但当我尝试 POST 请求时,它返回 404。

我正在开发与 Nagios 交互的 API: https://github.com/EyesOfNetworkCommunity/eonapi

这是我的 python GET 请求:

import requests

r = requests.get('https://device/eonapi/getAuthenticationStatus?username=test&apiKey=49fd4f56qs4dfs2sdf4')

print(r.json())
print(r.status_code)

结果:

{'api_version': '2.4.2', 'http_code': '200 OK', 'status': 'authorized'}
200

当我试图获取有关受监控主机的信息时的 POST 请求:

import requests

r = requests.post('https://device/eonapi/getHost?username=test&apiKey=49fd4f56qs4dfs2sdf4', data = {'hostName':'test1'})

print(r.status_code)

结果:

404

我不知道我做错了什么,我用 PHP 和 cURL 尝试了这些请求,但我仍然得到相同的结果。

【问题讨论】:

  • 在标题中使用 'Content-Type': "application/json" 并为 JSON 数据使用双引号。见stackoverflow.com/a/36038497/12409170
  • 我试过但不幸的是仍然得到 404 import requests host = { "hostName":"test1" } headers = {'Content-type': 'application/json'} r = requests.post('https://device/eonapi/getHost?username=test&apiKey=49fd4f56qs4dfs2sdf4', data=host, headers=headers) print(r.status_code)

标签: python api https nagios


【解决方案1】:

您可能必须使用获取请求,因为 url 显示“getHost”并且您尝试获取数据。您是否尝试过在该网址上使用 get ?

【讨论】:

  • eonapi 的文档指出,这必须是一个 post 请求。
  • 嗯,是的,我正在尝试获取主机的名称,但它需要一个 POST 请求。您发布主机名并获得信息。它写在文档中。虽然我确实尝试过 GET,但我仍然得到 404
猜你喜欢
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多