Python PUT请求到Confluence网页 - ValueError:没有JSON对象可以被解码,但是<response [200] =“”>

时间:2016-09-28 23:32:10

标签: python python-requests put confluence

我试图在汇合网页上更新一些数据。 Postman中的一切工作正常(数据更新)。但是,当我使用python和请求模块时,我收到以下错误:

  

ValueError:无法解码JSON对象

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

以下是我的代码(我试图将网页内容更改为“Hello World&#39;”):

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()

1 个答案:

答案 0 :(得分:0)

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

来自Requests docs

  

例如,如果响应获得204(无内容),或者响应包含无效的JSON,则尝试r.json()会引发ValueError:无法解码JSON对象。