Python PUT Request to Confluence Webpage - ValueError: No JSON object could be decoded, but <Response [200]>

Python PUT Request to Confluence Webpage - ValueError: No JSON object could be decoded, but <Response [200]>

我正在尝试更新 confluence 网页上的一些数据。在 Postman 中一切正常(数据已更新)。但是,当我使用 python 和请求模块时,出现以下错误:

ValueError: No JSON object could be decoded

最奇怪的是我收到了 200 状态代码,但网页没有更新。该错误似乎源于输入 'r.json'.

这是我的代码(我正在尝试将网页内容更改为'Hello World'):

import requests
import json

url = <url>

data = {
    "id": "18219205",
    "title": "Testapi",
    "type": "page",
    "version": {
        "number": 11
    },
    "body": {
        "storage": {
            "representation": "storage",
            "value": "Hello world."
        }
    }
}
dumped_data = json.dumps(data)

headers = {
    'content-type': "application/json",
    'authorization': "Basic <token number>",
    'cache-control': "no-cache",
    'postman-token': "<another token>"
    }

r = requests.put(url, data=dumped_data, headers=headers, verify=False)

print r.json()

发生这种情况是因为您要发帖的 API 没有响应 JSON,因此当您调用 r.json() 请求时,请求会尝试将响应正文解析为JSON 失败了。您看到 200 是因为您能够将数据正确发送到服务器,您只是试图读取错误的响应。

来自Requests docs

For example, if the response gets a 204 (No Content), or if the response contains invalid JSON, attempting r.json() raises ValueError: No JSON object could be decoded.