UrlFetchApp 请求失败的绕过/解决方法返回代码 403

问题描述 投票:0回答:1

我有这个谷歌脚本函数,它使用以下 Json REST API:

function TESOURODIRETO() {
  let srcURL = "https://www.tesourodireto.com.br/json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json";
  let jsondata = UrlFetchApp.fetch(srcURL);
}

此函数几天前运行良好,但现在返回以下错误:

异常:请求失败 https://www.tesourodireto.com.br 返回代码 403。服务器响应被截断:请稍等...

注意这是一个公共 json API,我可以直接从浏览器调用它,没有问题:

https://www.tesourodireto.com.br/json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json

我猜域名开始阻止来自谷歌脚本服务器的调用。

我想知道是否有任何方法可以绕过/解决它,首先从另一个公共 REST API 调用这个 json API,然后在我的 google 脚本函数上调用这个中间 API。

所以新代码将是这样的:

function TESOURODIRETO() {
  let srcURL = "https://www.tesourodireto.com.br/json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json";
  let intermediate_API = "<REST_API>"
  let jsondata = UrlFetchApp.fetch(intermediate_API + srcURL);
}

我试图找到一个 REST API 来执行此工作/绕过,但我找不到它。

api rest google-apps-script http-status-code-403 urlfetch
1个回答
0
投票

使用 UrlFetch 进行错误处理

此函数向您提供的 URL 发出 HTTP 请求,我已添加了要求您获取响应的所需选项。以及更正使用 UrlFetch 的格式。

复制:

在复制过程中。 URL 端点似乎要求使用 muteHttpException 选项才能通过 URL。遵循此复制过程所需的内容。我已经添加了 URL 端点所要求的正确选项。

Error Reference

示例代码:

function myFunction() {
  options = {muteHttpExceptions: true};
  var response = UrlFetchApp.fetch("https://www.tesourodireto.com.br/json/br/com/b3/tesourodireto/service/api/treasurybondsinfo.json", options);
  console.log(response.getContentText())
}

输出:

Output

参考资料:

UrlFetchApp

什么时候应该将 muteHTTPExceptions 设置为 true?

© www.soinside.com 2019 - 2024. All rights reserved.