0

在使用来自谷歌应用脚​​本的freshdesk api时出现错误

"{"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
4

2 回答 2

0

您正在使用选项中的 Payload 变量向 API 发送 GET 请求。在我看来,有效载荷用于 POST 请求。

使用查询参数构造 URL 并在没有 Payload 的情况下发送它。示例:' https://domain.freshdesk.com/api/v2/search/tickets?query= "priority:3"'

在此处查看详细信息:带有请求正文的 HTTP GET Freshdesk API 文档:https ://developers.freshdesk.com/api/#filter_tickets

于 2018-02-08T15:37:13.397 回答
0

发现两个问题 1) 网站不支持基于负载的获取。2) 谷歌应用程序不支持 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);
于 2018-02-09T05:41:02.413 回答