在使用Google Script向Basecamp API发布新消息方面提供一些帮助之后。
我创建了一个函数,粘贴在下面,但是当通过调试器运行时,我得到了Basecamp的422响应,说<title>
属性是空的,它不是
<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Title can't be blank</error> </errors>
我通过“高级休息客户端”尝试了相同的POST。在Chrome中,帖子很成功。
function postBasecampApi(endpoint, payload) {
var xml = ""+
'<request>'+
'<post>'+
'<category-id>123890662</category-id>'+
'<title>sting</title>'+
'<body>testing</body>'+
'</post>'+
'<notify>test notify</notify>'+
'</request>';
var url = basecampCompleteUrl + '/projects/12029591/posts.xml';
var headers = {
Authorization : 'Basic ' + Utilities.base64Encode(user + ':' + password)
}
var opt = {
'method': 'POST',
'payload': xml,
'headers' : headers
};
var response = UrlFetchApp.fetch(url, opt);
return Xml.parse(response.getContentText(), false);
}
提前感谢您提供任何帮助
答案 0 :(得分:0)
发现问题,获取Content-Type默认值不是'application / xml'。我在opt对象中添加了以下内容,一切正常
var opt = {
'contentType': 'application/xml',
'method': 'POST',
'payload': xml,
'headers' : headers
};
在标题中添加Content-Type
无法正常工作