POST使用Python请求API-状态码500

时间:2020-01-13 10:11:21

标签: python python-3.x rest post python-requests

我正在用Python(3.7.4,Windows 10)编写一个POST请求(REST API)脚本,目的是从另一个数据库检索数据并将其移至另一个数据库。

from os import getenv
import requests

# header includes login credentials and content type
header = {'access_key': "key", "access_token": getenv("token1"), 'content-type': 'application/json'}

# Body includes table names and other specified data to retrieve
body = {
# table names etc.
}

# Post request and printing of the post request text
post_r = requests.post(url = POST_url, data = body, headers = header)
post_text = post_r.text
print(post_text)

这将向我抛出HTTP错误状态代码500。我应该在代码中进行哪些更改以使其正确打印 post_text

1 个答案:

答案 0 :(得分:0)

我想出了解决方案:

post_r = requests.post(url = POST_url, data = body, headers = header)

应更改为

post_r = requests.post(url = POST_url, json = body, headers = header)

因此,我只是将 data 替换为 json ,脚本将 post_text 输出显示为正常。

标头中的“内容类型” 更改为“应用程序” 并没有帮助。它向我抛出状态代码415(“ HTTP 415不支持的媒体类型客户端错误响应代码”指示服务器由于有效负载格式为不支持的格式而拒绝接受该请求。格式问题可能是由于请求所指示的内容引起的-Type或Content-Encoding,或者直接检查数据的结果。” )。

我仍然想知道为什么 data = body 在邮寄请求行中是不可接受的。