【问题标题】:Why am I getting an empty response back from UrlFetchApp in Google Apps Script?为什么我从 Google Apps 脚本中的 UrlFetchApp 收到空响应?
【发布时间】:2020-08-19 21:25:31
【问题描述】:

我正在尝试使用 UrlFetchApp 从 Google Apps 脚本向外部 API 发出 GET 请求。当我用 Postman 或 curl 提出这个请求时,我得到了预期的响应。但是,当我尝试使用 UrlFetchApp 时,我得到了一个空响应 {}

我已尝试使用 Basic Auth 和 OAuth 2,以及如 here 所述在清单中显式设置 oauthScopes 属性。

我已与 API 团队确认,当我到达端点时,他们确实发回了完整的响应,但我收到的只是{}。我的问题似乎类似于 this StackOverflow question 没有得到答复。

var headers = {
   "X-Client-Key": "KEY",
   "Authorization": "Bearer TOKEN"
};

var options = {
  method: "get",
  headers: headers,
}

var response = UrlFetchApp.fetch(ENDPOINT, options);
console.log(JSON.stringify(response));  // returns {}

【问题讨论】:

  • 是什么让你认为你只收到{}
  • 我正在记录响应(更新了帖子)。正如@oleg-valter 指出的那样,这不适用于 HTTPResponse 对象。感谢您的提示!
  • 如果您使用Logger.log(response),您将看到所有响应。

标签: google-apps-script urlfetch


【解决方案1】:

不要将您在日志中看到的内容视为表面价值。 UrlFetchApp 服务的fetch 方法总是返回一个HTTPResponse 的实例,它首先是一个对象。这就是日志显示的内容(我假设您正在记录 response,因为这是我知道的唯一显示 {} 的上下文)。

要从响应中提取有用信息,请使用HTTPResponse 实例上公开的适当方法,例如getResponseCodegetContentText

【讨论】:

  • 你说得对,使用 getContentText 显示我毕竟得到了回复,只是不是我预期的格式!感谢您对 HTTPResponse 方法的教育。
  • @Lauren - 没问题,有时日志不是它们看起来的样子,最好遵循关于将在哪里返回/传递的文档 - 不易出错。最近有一个关于记录器显示[[]] 而实际上在第一个数组元素中有数据的问题,所以要小心...
猜你喜欢
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多