试图在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']))
现在我正在尝试使用以下grunt任务配置:
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"}
有点google-fu,我发现有些人声称他们通过在他们的curl命令行中添加“--post302”来解决这个问题。但我真的不知道或理解这在哪里适用。
我正在使用confluence REST API进行战斗,在我的情况下,问题出现在内容类型标题中,但您似乎已经拥有它。 我没有尝试创建新页面,但更新现有的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必须包含页面更新请求
如果您的数据已填满,则应将其转换为字符串并填写请求中的内容类型字段!
data = JSON.stringify(data);
request.headers['Content-Length'] = data.length;
https.request(request, respondHandler)