2016-09-28 1 views
0

Confluence 웹 페이지의 일부 데이터를 업데이트하려고합니다. 우편 배달부에서 모든 것이 잘 작동합니다 (데이터가 업데이트 됨). 그러나, 나는 파이썬과 요청 모듈 나는 다음과 같은 오류가있어 사용할 때 :Python PUT에서 Confluence 웹 페이지로 요청 - ValueError : JSON 객체를 디코딩 할 수 없습니다. 그러나 <Response [200]>

ValueError: No JSON object could be decoded

이상한 것은 내가 다시 200 상태 코드를 얻고되지만 웹 페이지가 업데이트되지 않습니다. 오류는 'r.json'을 입력하는 것으로부터 뿌리를 내린 것으로 보입니다. 여기

내 코드입니다 (I는 웹 페이지에 '안녕하세요'의 내용을 변경하기 위해 노력하고있어) :이 일어나고

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이 꽤 일반적입니다. 그러나 모든 content-type에 응답 할 수 있습니다. 텍스트, HTML 등이 될 수 있습니다. 왜 예상대로하지 않는지는 잘못된 본문, 메서드 또는 끝점 일 수 있습니다. 자신이하려는 일의 구체적인 내용을 알지 못하면 말하기가 어렵습니다. –

관련 문제