【问题标题】:How to handle content type azip and content encoding application/a-gzip in GoLang?如何在 GoLang 中处理内容类型 azip 和内容编码 application/a-gzip?
【发布时间】:2018-11-15 09:49:46
【问题描述】:

我正在尝试使用 App Store Connect API 通过 GoLang 下载财务和销售报告。

我成功连接到 App Store API 服务器的调用并接收到正确的输出。

我无法下载该报告,因为它们以字节为单位发送内容类型为“azip”的响应。

下面是我的 Go 代码:

url := "https://api.appstoreconnect.apple.com/v1/salesReports?filter[frequency]=DAILY&filter[reportType]=SUBSCRIPTION_EVENT&filter[reportSubType]=SUMMARY&filter[vendorNumber]=87389901&filter[reportDate]=2018-10-12&filter[version]=1_1"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer eyJhbGciOiJFUzI1NiIsImtpZCI6IjZROUM1WVc0N1QifQ.eyJpc3MiOiI2OWE2ZGU5MC00NGNiLTQ3ZTMtZTA1My01YjhjN2MxMWE0ZDEiLCJleHAiOjE1NDIyNzM0MzcsImF1ZCI6ImFwcHN0b3JlY29ubmVjdC12MSJ9.fC4zmgaUZZTwtopt9gaSl6HUtACNjBvWi5VNa366d5FI5l_00wM1U2cBi26a0jtB8yuZOufDSQA0MB5iMC332g")

res, _ := http.DefaultClient.Do(req)

fmt.Println(res.Header.Get("Content-Encoding"))

defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)

fmt.Println(res)
fmt.Println(string(body))

下面是我得到的标题。

Server = daiquiri/3.0.0
Date  = Thu, 15 Nov 2018 12:01:47 GMT
Content-Type = application/a-gzip
Transfer-Encoding = chunked
Connection  = keep-alive
requestId = 24e0c473-a35f-4374-846c-d17007c49978
Content-Encoding = agzip
Content-Disposition → attachment;filename = Subscription_Event_87389901_20181012_V1_1.txt.gz
x-reports-filename = Subscription_Event_87389901_20181012_V1_1.txt.gz
x-reports-download-version = 1_1
Strict-Transport-Security = max-age=31536000; includeSubDomains
X-XSS-Protection = 1; mode=block
X-Content-Type-Options = nosniff
Host = reportingitc-reporter-internal.corp.apple.com
X-Frame-Options = SAMEORIGIN
X-Request-ID = QSBM3FPCNVUODU2H5FCQRL5T
X-Rate-Limit = user-hour-lim:3600;user-hour-rem:3599;
x-daiquiri-instance = daiquiri:38493001:pv50p00it-hyhk12043901:13987:18O38

我可能做错了什么。但是请让我知道如何使用 GoLang 将其存储为文件。

【问题讨论】:

  • 这可能只是 gzip 数据。尝试解压缩它。 (请不要张贴图片)
  • 尽可能避免发布图片。在这种情况下,您可以键入标题而不是发布图片
  • 感谢我删除了图片
  • 我真的希望身份验证令牌不是真实的。如果是,你应该确保它被撤销(编辑它是不够的,它已经被张贴了)。
  • 嗨,Anam,你为什么要这么做?我遇到了同样的问题。谢谢!

标签: go curl httprequest app-store-connect


【解决方案1】:

您需要在带有“application/a-gzip”值的标头中添加参数 Accept

例子:

request, err := http.NewRequest("GET", "https://api.appstoreconnect.apple.com/v1/salesReports", nil)
request.Header.Add("Authorization", fmt.Sprintf("Bearer %v", token.Bearer))
request.Header.Add("Accept", "application/a-gzip")

【讨论】:

    猜你喜欢
    • 2018-02-27
    • 2012-05-06
    • 1970-01-01
    • 2016-12-16
    • 2021-01-22
    • 2015-01-17
    • 2010-10-26
    • 2020-11-24
    • 1970-01-01
    相关资源
    最近更新 更多