0

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

4

3 回答 3

2

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

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

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

于 2016-10-27T20:09:47.727 回答
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。

于 2016-11-02T08:08:19.927 回答
1

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

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

于 2016-10-27T13:23:06.047 回答