应用程序脚本-UrlFetchApp.fetch{url,method:"get"}to a gzip失败,代码为406 [英] Apps Script - UrlFetchApp.fetch {url, method: "GET"} to a gzip gets failed with code 406

查看:5
本文介绍了应用程序脚本-UrlFetchApp.fetch{url,method:"get"}to a gzip失败,代码为406的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在这里进行了几个月的探索。如有任何帮助,我们将不胜感激!

我正在尝试使用UrlFetchApp.fetch()在App Store Connect上通过API进行连接。在沙漠中挣扎着为天然气身份验证生成正确的JWT之后,我现在面临着严峻的现实:服务器的答案(内容类型和内容编码)不是JSON,而是GZIP。

代码406消息: "截断的服务器响应:此请求不支持提供的Accept标头。请求:允许的应用程序/json:应用程序/a-gzip"

是否仍有办法访问该文件?

这里是仅执行调用的代码部分(用于身份验证的JWT签名代码在上面->"sJWT")

var url = "https://api.appstoreconnect.apple.com/v1/financeReports?filter[regionCode]=ZZ&filter[reportDate]=2019-11&filter[reportType]=FINANCIAL&filter[vendorNumber]=xxx"

var response = UrlFetchApp.fetch(url, { method : "GET", headers : { "Authorization" : "Bearer "+sJWT }});

非常感谢!

推荐答案

此答案如何?请将此视为几个可能的答案之一。

修改点:

  • 当我看到the official document时,要求在请求头中使用application/a-gzipforAccept
  • ,在本例中,响应还返回gzip的内容。因此需要对内容进行解压缩。

当以上几点反映到您的脚本中时,如何进行以下修改?

修改后的脚本:

var url = "https://api.appstoreconnect.apple.com/v1/financeReports?filter[regionCode]=ZZ&filter[reportDate]=2019-11&filter[reportType]=FINANCIAL&filter[vendorNumber]=xxx"
var response = UrlFetchApp.fetch(url, {
  method: "GET",
  headers: {
    "Authorization": "Bearer " + sJWT,
    "Accept": "application/a-gzip"  // Added
  }
});
var res = Utilities.ungzip(response.getBlob());  // Added

注意:

  • 以上修改后的脚本假定您的URL和sJWT的值对于使用API是正确的。

引用:

不幸的是,我无法测试上述脚本。我为此道歉。因此,如果上述修改后的脚本不能解决您的问题,我深表歉意。

这篇关于应用程序脚本-UrlFetchApp.fetch{url,method:"get"}to a gzip失败,代码为406的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆