在Python中放置API请求返回错误

时间:2017-12-19 18:43:31

标签: python json rest

我使用API​​很新,所以请耐心等待。我已经搜索过这样的其他问题了,但是没有遇到任何可以解决问题的解决方案。

使用Postman,我能够使用JSON发出Put请求并且工作正常。当我尝试在Python中使用相同的JSON主体时,我收到此错误:

{'code': 'E.Internal', 'error': 'An internal error has occurred processing your request. Please notify Customer Support for assistance.', 'status': 'error'}

公司的客户支持不是很有帮助,所以我想看看这里是否有人可以帮助我。

这是我的剧本:

url = 'https://website.com/rest/site/' + record_id

json_body = (JSON body here, same one that works in Postman)
head = {'Accept':'application/json', 'Content-Type': 'application/json'}

response = requests.put(url, auth=(username, password), json=json_body, headers=head)
data = response.json()
print(data)

如果我将requests.put更改为requests.get并删除" auth =(用户名,密码)"之后的所有内容。它工作正常并返回记录的json,所以我能够连接到API,只是不用Python放任何东西。同样,在Postman中基本上完全相同的东西。

我究竟做错了什么以及如何输入数据?

1 个答案:

答案 0 :(得分:1)

根据请求文档,您没有正确填写put函数。试试这样吗?

import json
import requests

url = 'https://website.com/rest/site/' + record_id

headers = {
    "Content-Type": "application/json",
    'Accept':'application/json'
}

payload = json.dumps({
    "data_goes_here": None
})

rv = requests.put(url, data=payload, headers=headers, verify=False)
if rv.status_code > 399:
    rv.raise_for_status()
print(json.loads(rv.text))