我一直在尝试使用外部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(它有效)。
谢谢, 杰克
答案 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}}
我没有对它进行测试,但我相信它有效。