Я пытаюсь использовать Rest API для обновления нашей вики-страницы, но ничего не происходит, хотя я получаю 200 кодов.
Я пытался сделать это как через почтальона, так и через Python, и в обоих случаях я получаю один и тот же ответ сервера, но безрезультатно. Вот мой код Python -
curl = 'curl -u user:pass -X POST -H \'Content-Type: application/json\' ' \
'-d \'{0}\' https://wiki.myCompany.com:8444/confluence/rest/api/content/'\
.format(json.dumps(new))
output = subprocess.check_output(['bash', '-c', curl])
print(output`)
Я пробовал использовать как POST, так и PUT
Вот ответ -
PUT https://wiki.myCompany.com:8444/confluence/rest/api/content/
200 OK 26.47 kB 655 ms
View Request View Response
HEADERS
Content-Encoding: gzip
Content-Length: 6578
Content-Security-Policy: frame-ancestors 'self'
Content-Type: text/html;charset=UTF-8
Date: Wed, 15 Feb 2017 20:24:46 GMT
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=DBCAA4C03DC489A720B8A59D755BD22A; Path=/; Secure; HttpOnly
Vary: User-Agent
X-Accel-Buffering: no
X-Asen: SEN-3386858
X-Ausername: username
X-Confluence-Request-Time: 1487190286413
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Seraph-Loginreason: OK
X-Xss-Protection: 1; mode=block
BODYview raw
<!DOCTYPE html>
<html>
<head>
<title>Dashboard - myCompany Wiki</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE,chrome=IE7">
<meta charset="UTF-8">
<meta id="confluence-context-path" name="confluence-context-path" content="">
<meta id="confluence-base-url" name="confluence-base-url" content="https://wiki.myCompany.com:8444">
<meta id="atlassian-token" name="atlassian-token" content="abcd227f923fa6d5cce068a25de3bb4a3a3ceca4">
<script type="text/javascript">
var contextPath = '';
</script>
..... A lot more html .... but nothing relating to Body or Body.Storage...
Мой JSON сформирован правильно и содержит идентификатор страницы - вот его начало ....
{"id":"28870287","type":"page","status":"current","title":"Automated QA Results - Android","body":{"storage":{"value":"<p>These are the results of every git merge...}}
Кто-нибудь знает, почему ничего не происходит?
Раньше я пробовал это через библиотеку запросов - получаю тот же код ответа 200. Я просто смотрел, заметили ли вы, ребята, что-то не так с самими вызовами, а не с реализацией
# output = requests.post('https://{0}/confluence/rest/api/content'.format(jirasite),
# data=(json.dumps(new)),
# auth=('user', 'pass'),
# headers=({'Content-Type': 'application/json'}))
**** Новое обновление ****
Я пробую это буквально из значения скручивания акций, которое указано на странице Confluence API.
'{"id":"28870287","type":"page","title":"new page","space":{"key":"TST"},"body":{"storage":{"value":"<p>This is the updated text for the new page</p>","representation":"storage"}},"version":{"number":2}}'
Все равно безрезультатно ... Я в полной растерянности ....
****** Обновить снова ******
Я просто собираюсь опубликовать код, с которым сейчас работаю
r = requests.get('{0}/rest/api/content/28870287?expand=body.storage,version'.format(conflu_site),
auth=(test_user, test_pass)).text
print(r) # This works as expected
new = '{\"id\":\"28870287\",\"type\":\"page",\"title":\"Automated QA Results - Android\",\"space\":{\"key\":\"TST\"},' \
'\"body\":{\"storage\":{\"value\":\"<p>This is the updated text for the new page</p>\",' \
'\"representation\":\"storage\"}},\"version\":{\"number\":2}}'
update_response = requests.put('{0}/confluence/rest/api/content/28870287/'.format(conflu_site),
data=new,
auth=(test_user, test_pass),
headers=({'Content-Type': 'application/json'}))
print("Update Confluence Response: " + str(update_response))
requests
, чтобы вы могли очистить свой код и сохранить его в чистом виде. Затем попробуйте еще раз и сообщите нам полученный ответ. Вероятно, в Интернете больше ресурсов для использованияrequests
, чем почти для любой другой библиотеки Python, поэтому у вас не должно возникнуть проблем с поиском того, что вам нужно. - person daveruinseverything   schedule 16.02.2017