我正在用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 ?
答案 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 在邮寄请求行中是不可接受的。