Confluence REST API更新页面

时间:2016-10-27 12:27:59

标签: c# httpclient confluence-rest-api

这是我更新现有页面的代码。 JSON中的变量不是问题所在,因为我可以使用此JSON创建一个没有任何问题的页面。

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

如果我运行这个,我收到服务器错误405.不知道为什么,因为我可以使用POST方法轻松创建一个页面。

我自己没有托管API IIS。

3 个答案:

答案 0 :(得分:2)

您需要将内容ID放在网址中以更新现有网页:PUT / rest / api / content / {contentId}。

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

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

答案 1 :(得分:2)

这是代码,完美地用于更新页面。感谢mtheriault的答案!

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

如上所述,我不得不增加版本号,我也必须将pageid放入Uri。

答案 2 :(得分:1)

如果您正在托管API,可能会出于多种原因阻止Put动词(实际上WebDav可能是根本原因)

点击此链接ASP.NET Web API - PUT & DELETE Verbs Not Allowed - IIS 8