登录
首页 >  Golang >  Go问答

处理GoLang中的azip内容类型和application/a-gzip内容编码

来源:stackoverflow

时间:2024-03-25 21:09:37 396浏览 收藏

在处理 App Store Connect API 时,对于具有“azip”内容类型和“application/a-gzip”内容编码的响应,需要在请求标头中添加“Accept”参数,并将其值设置为“application/a-gzip”。此修改将允许将响应字节存储为文件。

问题内容

我正在尝试使用 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 将其存储为文件。


解决方案


您需要在标头中添加带有“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")

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>