我在这里做了几个月的任务。任何帮助都将不胜感激!
我试图通过使用UrlFetchApp.fetch()进行连接。在沙漠中努力为GAS上的认证生成正确的JWT之后,我现在面临严峻的现实:服务器回答(内容类型和内容编码)不是JSON,而是GZIP。
代码406消息:“截断的服务器响应:此请求不支持提供的接受头。请求: application/json允许:application/a”
有没有办法仍然可以访问该文件?
下面是代码中只执行调用的部分(用于身份验证的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 }});非常感谢!
发布于 2020-03-06 23:38:42
这个答案怎么样?请把这看作是几个可能的答案之一。
修改要点:
Accept使用application/a-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注意:
sJWT的值对于使用API是正确的。参考文献:
不幸的是,我无法测试上面的脚本。我对此表示歉意。因此,如果上面修改的脚本没有解决您的问题,我道歉。
发布于 2022-03-31 03:05:43
尝试将blob内容类型更改为“application/x”:
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"
}
});
var res = Utilities.ungzip(response.getBlob().setContentType("application/x-gzip")); // Changed
https://stackoverflow.com/questions/60572510
复制相似问题