我正在使用发出POST请求的请求来创建用户。当我使用curl时,请求会成功创建201,但是当我使用请求时,响应会失败,响应500。我的curl命令是
curl --user administrator:password -H "Content-Type: application/json" https://localhost:8080/midpoint/ws/rest/users -d @user.json -v
我的python脚本是:
import requests
import json
headers = {
'Content-Type': 'application/json',
}
with open('user.json') as j:
data = json.load(j)
response = requests.post('https://localhost:8080/midpoint/ws/rest/users', headers=headers, data=str(data), auth=('Administrator', 'password'))
print(response)
谁能看到我的python脚本失败的原因?我很茫然。
答案 0 :(得分:1)
str(data)
返回data
的Python表示形式,而不是其JSON表示形式。这两种形式在'
与"
,True
与true
以及None
与null
等方面可能有所不同。要正确地对data
进行JSON化,请在其上调用json.dumps()
:
response = requests.post(..., data=json.dumps(data))
或让requests
进行JSON化:
response = requests.post(..., json=data)
或直接使用user.json
中显示的JSON:
with open('user.json') as j:
data = j.read()
response = requests.post(..., data=data)