2016-09-28 10 views
0

Confluence Webページの一部のデータを更新しようとしています。 Postmanですべてうまく動作します(データは更新されます)。私はPythonと私は次のエラーを取得しています要求モジュールを使用する場合ただし、:Confluence WebページへのPython PUTリクエスト - ValueError:JSONオブジェクトがデコードできませんでしたが、<Response [200]>

ValueError: No JSON object could be decoded

を奇妙なことは、私は戻って200のステータスコードを取得していますが、Webページが更新されていないです。このエラーは、「r.json」と入力したことに由来します。ここで

は(私は「こんにちは世界へのWebページの内容を変更しようとしている)私のコードです:

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

答えて

0

これが起こっているあなたが投稿しているAPIは、と応答しないので、 JSONですので、r.json()のリクエストはレスポンスの本文をJSONとして解析しようとしますが、失敗します。サーバーにデータを正しく送ることができたため、200が表示されています。間違った応答を読み取ろうとしているだけです。 Requests docsから

なぜ更新はその後、起きていない
+0

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.

?また、JSONでない場合は、APIがどのような形式で応答できますか? –

+0

私は特定のAPIに精通していませんが、JSONのほかにXMLがかなり一般的です。ただし、どのコンテンツタイプでも応答できます。テキスト、HTMLなどがあります。 なぜそれがあなたが期待していることをしていないのかは、間違ったボディ、メソッド、またはエンドポイントになる可能性があります。あなたがしようとしていることの詳細についてもっと知ることなしに言うのは難しいです。 –

関連する問題