0

Atlassian wiki で wiki ページを作成しようとしています。以前は python スクリプトを使用していましたが、このコードは問題なく動作しました。

data = json.dumps({"type":"page", "data":"testData", "title":postTitle,"space":{"key":"EB"}, "body":{"storage":{"value": content,"representation":"storage"}}})
r = requests.post("https://estech.atlassian.net/wiki/rest/api/content/", data=data, headers=headers, auth=(confluenceLogin['username'], confluenceLogin['password']))

今、私は次の単調なタスク構成を使用しようとしています:

    http: {
        atlassianwiki: {
            options: {
                uri: atlassianURL + "/wiki/rest/api/content/",
                headers: {"Content-Type": "application/json"},
                auth: {
                    "user": confluencelogin,
                    "pass": confluencepass
                },
                method:"POST",
                body: JSON.stringify(wikijson)
            }
        }
    }

wikijson は次のようになります。

wikijson = {
            "type": "page",
            "data": "testData",
            "title": "testtitle",
            "space": {key:"EB"},
            "body": {
                "storage": {
                    "value": "<p>testing posting</p>",
                    "representation": "storage"
                }
            }
        }

このタスクを実行すると、次のエラーが表示されます。

Fatal error: 500 {"statusCode":500, "message":"java.io.EOFException: No content to map to Object due to end of input"}

少しグーグルフーを調べたところ、curlコマンドラインに「--post302」を追加することでこれを修正したと主張する人がいることがわかりました。しかし、それがここでどのように適用されるかはよくわかりません。

4

1 に答える 1

2

私は合流 REST API と戦っていました。私の場合、問題は content-type ヘッダーにありましたが、既に解決しているようです。
新しいページを作成しようとはしませんでしたが、既存の 1 つの Confluence API を更新することは私には少し魔法のように思えたので、動作を開始する前に実行しなければならなかったすべての手順をここに残します。

function composeRequest(method) {
  var auth = new Buffer(user + ':' + pass).toString('base64');
  var request = {
  host: 'confluence.myserver.com',
  port: 443,
  contentType: "application/json; charset=utf-8",
  'path': path,
  method: method || "GET",
  headers: {
    'Authorization': 'Basic ' + auth,
    'Content-Type': 'application/json'
  },
  rejectUnauthorized: false,
  requestCert: true,
  agent: false
};


  return request;
}

そして、ページ更新リクエスト JSON MUST が含まれているように見えました

  • pageId (パス内であっても、繰り返す必要があります)
  • タイプ
  • 題名
  • バージョン (変ですが、設定する必要があります。0 または 1、覚えていません)

データが入力されたら、それを文字列に変換し、リクエストの content-type フィールドに入力する必要があります!

data = JSON.stringify(data);
request.headers['Content-Length'] = data.length;
https.request(request, respondHandler)
于 2015-05-07T17:13:45.817 に答える