2016-04-29 16 views
2

私は、定義された親の子として特定のスペースにページを作成したいという事実に直面しています。Confluence Rest API:スペースと親でページを作成できますか?

これらの方法でこれを行う可能性はありますか? まだ見つかりませんでした。

ありがとうございました! :)

+0

可能な重複[自分のREST APIを使用してConfluenceの中に新しいページを作成するには?](http://stackoverflow.com/questions/23523705/how-to-create -new-page-in-confluence--rest-rest-apiを使用して) –

答えて

0

Create a new page as a child of another page

C#で類似しているべきです。 REST APIはオープンスタンダードに基づいているため、任意のWeb開発言語を使用してAPIにアクセスできます。

  • のHttpWebRequest/HttpWebResponseの
  • のWebClient
  • HttpClientを私はしたい

(.NET 4.5から利用できる上):C#ので

、次のいずれかのオプションを使用することができますHttpClientクラスを使用することを強くお勧めします。これは、以前の2つよりもはるかに優れている(ユーザビリティの観点から)ためです。

0

あなたが必要とするすべての部分:

のcreatePage機能
のHTTP POST機能
ダムクラスのサンプルJSONが資格にします。
サンプルJSON &ベースURL

internal static string createAPage(string space, string title, string body, string objectType, int ancestorId = -1) 
     { 
      string json = string.Empty; 
      try 
      { 

       CreateContentWithParentJson createContentWithParentJson = JsonConvert.DeserializeObject<CreateContentWithParentJson>(_jsonCreatePageWithParentSample); 
       createContentWithParentJson.space.key = space; 
       createContentWithParentJson.title = title; 
       body = body.Replace("&", "&amp;"); 
       createContentWithParentJson.body.storage.value = "<p>" + body + "</p>"; 
       Ancestor a = new Ancestor(); 
       a.id = ancestorId; 
       createContentWithParentJson.ancestors = new List<Ancestor>(); 
       createContentWithParentJson.ancestors.Add(a); 
       json = JsonConvert.SerializeObject(createContentWithParentJson, Utils.getJsonSettings()); 

     } 
     catch (Exception) { // handle exception 
     } 
     return Utils.contentPost(json, _baseUrl); 

    } 


    internal static string contentPost(string postData, string url, string method = "POST") 
     { 
      string encodedCred = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(ConfAPI._confUser + ":" + ConfAPI._confPass)); 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      request.Headers.Add("Authorization", "Basic " + encodedCred); 
      request.Headers.Add("X-Atlassian-Token", "no-check"); 
      request.Method = method; 
      request.Accept = "application/json"; 
      request.ContentType = "application/json"; 

      // request.KeepAlive = false; 
      if (postData != null) 
      { 
       byte[] data = Encoding.UTF8.GetBytes(postData); 
       request.ContentLength = data.Length; 
       using (var stream = request.GetRequestStream()) 
       { 
        stream.Write(data, 0, data.Length); 
       } 
      } 
      WebResponse response; 

      try 
      { 
       response = (HttpWebResponse)request.GetResponse(); 
      } 
      catch (WebException e) 
      { 
       return e.Message + " " + e.StackTrace.ToString(); 
      } 

      var responsestring = new StreamReader(response.GetResponseStream()).ReadToEnd(); 
      return responsestring; 
     } 

    public class CreateContentWithParentJson 
    { 
     public string type { get; set; } 
     public string title { get; set; } 
     public List<Ancestor> ancestors { get; set; } 
     public Space space { get; set; } 
     public Body body { get; set; } 
    } 

internal static string _baseUrl = "http://localhost:8090/rest/api/content"; 
internal static string _jsonCreatePageWithParentSample = @"{'type':'page','title':'new page', 'ancestors':[{'id':456}], 'space':{'key':'TST'},'body':{'storage':{'value':'<p>This is a new page</p>','representation':'storage'}}}"; 
関連する問題