这是我更新现有页面的代码。 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。
答案 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