Google应用脚本UrlFetchApp.fetch请求域(com.au)奇怪

时间:2017-09-03 10:03:08

标签: google-apps-script urlfetch

我一直在尝试使用外部API使用澳大利亚API的运费来填充Google表格。

发布请求时,Appscript似乎正在将域.com.au部分更改为<?>

我收到401错误(你可以看到.<?>):

  

Request failed for https://www.transdirect.<?>/api/quotes returned code 401. Truncated server response: {"message":"You are not permitted to access this area.","code":401,"success":false} (use muteHttpExceptions option to examine full response) (line 36, file "TransDirect API Handler")

任何人都知道如何在我的请求中阻止这种情况发生? 这是代码(我删除了API密钥。):

function Quote() {


var url= "https://www.transdirect.com.au/api/quotes";
var payload = {'declared_value': '100.00',
  'items': [
    {
      'weight': '38.63',
      'height': '0.25',
      'width': '1.65',
      'length': '3.32',
      'quantity': 1,
      'description': 'carton'
    },
    {
      'weight': '39.63',
      'height': '1.25',
      'width': '2.65',
      'length': '4.32',
      'quantity': 2,
      'description': 'carton'
    }
  ],
  'sender': {
    'postcode': '3',
    'suburb': 'SYDNEY',
    'type': 'business',
    'country': 'AU'
  },
  'receiver': {
    'postcode': '3000',
    'suburb': 'MELBOURNE',
    'type': 'business',
    'country': 'AU'
  }};
var response = UrlFetchApp.fetch(
            url,
            {
              'method' : 'post',
              'contentType': 'application/json',
              'Api-Key': '<API KEY HERE>',
              'payload' : JSON.stringify(payload),
            }
);
var responseCode = response.getResponseCode()
var responseBody = response.getContentText()

if (responseCode === 200) {
  var responseJson = JSON.parse(responseBody)
} else {
  Logger.log(Utilities.formatString("Request failed. Expected 200, got %d: %s", responseCode, responseBody)
            );

}
};

你会说这是UrlFetchApp中的错误还是我做错了什么?

为了澄清一下,我已经在没有戏剧的情况下测试了apiary.io上的API-Key(它有效)。

谢谢, 杰克

1 个答案:

答案 0 :(得分:0)

var response = UrlFetchApp.fetch(url, { 'method' : 'post', 'contentType': 'application/json', 'headers': { // you need this header field 'Api-key': '<API KEY HERE>', // Api-key with lowcase k }, 'payload' : JSON.stringify(payload), }); 正在执行请求。您从REST接口收到错误,因为您的有效负载可能缺少get_placeholder中的api密钥。

{{1}}

我没有对它进行测试,但我相信它有效。