Google Script POST到Basecamp Classic API

时间:2014-04-10 14:00:52

标签: javascript post google-apps-script basecamp

在使用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);
}

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:0)

发现问题,获取Content-Type默认值不是'application / xml'。我在opt对象中添加了以下内容,一切正常

var opt = {
  'contentType': 'application/xml',
  'method': 'POST',
  'payload': xml,
  'headers' : headers
};

在标题中添加Content-Type无法正常工作