Python发布请求返回500

时间:2018-10-02 17:45:58

标签: python api python-requests

我正在使用发出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脚本失败的原因?我很茫然。

1 个答案:

答案 0 :(得分:1)

str(data)返回data的Python表示形式,而不是其JSON表示形式。这两种形式在'"Truetrue以及Nonenull等方面可能有所不同。要正确地对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)