API-интерфейс приложения Google с ошибкой API-интерфейса freshdesk

При использовании скрипта freshdesk api из google app script возникает ошибка

"{"code":"invalid_content_type","message":"Content-Type header is set to . It should be set to application/json"}"

Используемый для этого код

function hd_getTickets(){//using v2
    var API_KEY = 'xxxxxxxxxxxxxx';
    var headers = {'Content-type': 'application/json','Authorization': 'Basic ' + Utilities.base64Encode(API_KEY + ':X')    };
    var data = {  "query":"\"priority:3\"" };
    var ENDPOINT = 'https://xxxxxxx.freshdesk.com/api/v2'; 
    var url = ENDPOINT + '/search/tickets';  
    var options = {      'method': 'get', muteHttpExceptions: true,'headers': headers,'payload' : JSON.stringify(data)};
    var response = UrlFetchApp.fetch(url, options);
}

Изменение конечной точки и удаление полезной нагрузки из параметров работают, поэтому предполагается, что авторизация и заголовок в порядке.

var url = ENDPOINT + '/tickets';  
var options = {'method':'get','headers':headers, muteHttpExceptions: true};

Использование почтальона это работает

https://xxxxxxx.freshdesk.com/api/v2/search/tickets?query="priority:3"

с заголовком, установленным как

Content-Type:application/json
Authorization:Basic xxxxxxxxxxxxxxxx

person Rohan Sharma    schedule 08.02.2018    source источник


Ответы (2)


Вы отправляете GET-запрос к API с переменной Payload в опциях. На мой взгляд, полезные нагрузки используются для запросов POST.

Создайте URL-адрес с параметрами запроса и отправьте его без полезной нагрузки. Пример: 'https://domain.freshdesk.com/api/v2/search/tickets?query="priority:3"'

Подробнее см. здесь: HTTP GET с телом запроса Документ Freshdesk API: https://developers.freshdesk.com/api/#filter_tickets

person Suhail Ansari    schedule 08.02.2018
comment
это подводит меня ко второй проблеме, которая, вероятно, должна быть в другом посте. Я получаю эту ошибку - Недопустимый аргумент: xxxxxx.freshdesk.com/ API/v2/поиск/ - person Rohan Sharma; 09.02.2018

Обнаружены две проблемы: 1) веб-сайт не поддерживает получение на основе полезной нагрузки. 2) приложения Google не поддерживают специальные символы в URL.

Добавление параметров к исходному URL-адресу и кодирование двойных кавычек работает.

  var ENDPOINT = 'https://xxxxxx.freshdesk.com/api/v2';   
  var query ='query='+encodeURIComponent("\"priority")+":1"+encodeURIComponent("\"");
  var url = ENDPOINT + '/search/tickets?'+query;  
  var options = {'method': 'get', muteHttpExceptions: true,'headers': headers}; 
  var response = UrlFetchApp.fetch(url, options);
person Rohan Sharma    schedule 09.02.2018