Google Script POST для Basecamp Classic API

После небольшой помощи в отношении публикации нового сообщения в API Basecamp с использованием Google Script.

Я создал функцию, вставленную ниже, но при запуске ее через отладчик я получаю ответ 422 от Basecamp, в котором говорится, что атрибут <title> пуст, а это не так.

<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Title can't be blank</error> </errors>

Я попробовал тот же POST через «Advanced Rest Client» в 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);
}

Заранее благодарю за любую помощь


person Alan Barrows    schedule 10.04.2014    source источник


Ответы (1)


Обнаружена проблема, значение по умолчанию Content-Type для извлечения не равно «application/xml». Я добавил следующее в объект opt, и все заработало нормально.

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

Ничего не стоит добавление Content-Type в заголовки не работает

person Alan Barrows    schedule 10.04.2014