2016-10-27 1 views
0

Ceci est mon code pour mettre à jour une page existante. Les variables dans le json ne sont pas le problème, parce que je peux créer une page avec ce json sans aucun problème.API REST Confluence Mettre à jour une page

string json = "{\"type\":\"page\",\"title\":\"" + "Tabelle " + table.Name + "\",\"space\":{\"key\":\"PROG\"},\"ancestors\":[{\"id\":120179837}],\"body\":{\"storage\":{\"value\":\"" + WARNING + table.BasisInfosHtmlString + table.TableStructurHtmlString + table.DependentTablesHtmlString + table.ReferencedInHtmlString + "\",\"representation\":\"storage\"}}}"; 
var content = new StringContent(json, Encoding.UTF8, "application/json"); 
var response = Client.PutAsync(@"/rest/api/content", content); 

Si je cours, j'obtiens l'erreur du serveur 405. Je ne sais pas pourquoi, parce que je peux easiely créer une page avec cette aide de la méthode POST.

Je n'héberge pas l'API IIS moi-même.

+0

Possible duplication de [API Web ASP.NET - Verbes PUT & DELETE non autorisés - IIS 8] (http://stackoverflow.com/questions/10906411/asp-net-web-api-put-delete-verbs- not-allowed-iis-8) – Jek

+0

Ce n'est pas un doublon, car je n'héberge pas l'IIS. Sa confluence est hébergée sur le réseau de mon entreprise. –

Répondre

2

Vous devez mettre l'identifiant de contenu dans l'URL mettre à jour une page existante: PUT/rest/api/content/{contentId}.

var response = Client.PutAsync(@"/rest/api/content/{contentId}", content); 

Ref .: https://docs.atlassian.com/confluence/REST/latest/#content-update

+0

J'ai essayé cela avant, mais sans les parenthèses autour du contentId. Devrait-il y avoir des crochets? –

+0

Pas de support, voir la documentation correspondante. – mtheriault

+0

Essayé comme décrit dans la documentation. Mais n'a pas travaillé .. –

2

Ce code, qui a parfaitement fonctionné pour mettre à jour une page. Merci à mtheriault pour les réponses!

string json = "{\"version\":{\"number\":2},\"type\":\"page\",\"title\":\"" + "Tabelle " + table.Name + "\",\"ancestors\":[{\"id\":120179837}],\"body\":{\"storage\":{\"value\":\"" + WARNING + table.BasisInfosHtmlString + table.TableStructurHtmlString + table.DependentTablesHtmlString + table.ReferencedInHtmlString + "\",\"representation\":\"storage\"}}}"; 
var content = new StringContent(json, Encoding.UTF8, "application/json"); 
var response = Client.PutAsync(@"/rest/api/content/" + pageid, content); 

Comme indiqué, je devais incrémenter le numéro de version, aussi je devais mettre le pageid dans le Uri.