From f4c41c6f927bf4fe0f7e253c2372c44b0520f7c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 26 Jan 2022 19:17:14 +0800 Subject: [PATCH] gzip --- platformapi/platformapi.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/platformapi/platformapi.go b/platformapi/platformapi.go index ec8e25d7..c9c0363d 100644 --- a/platformapi/platformapi.go +++ b/platformapi/platformapi.go @@ -2,6 +2,7 @@ package platformapi import ( "bytes" + "compress/gzip" "errors" "fmt" "io/ioutil" @@ -156,8 +157,22 @@ func AccessPlatformAPIWithRetry(client *http.Client, handleRequest func() *http. bodyMap map[string]interface{} parseJSONErr error ) - bodyData, err := ioutil.ReadAll(response.Body) - if err != nil { + + var bodyData []byte + var getDataErr error + //解析返回的gzip数据信息 + if response.Header.Get("Content-Encoding") == "gzip" { + reader, e := gzip.NewReader(response.Body) + if e != nil { + fmt.Printf("create gzip reader err: %s \n\n", e.Error()) + return e + } + bodyData, getDataErr = ioutil.ReadAll(reader) + } else { + bodyData, getDataErr = ioutil.ReadAll(response.Body) + } + + if getDataErr != nil { baseapi.SugarLogger.Errorf("AccessPlatformAPIWithRetry:%s ioutil.ReadAll failed, url:%v, error:%v", trackInfo, request.URL, err) errLevel = ErrLevelRecoverableErr // 读取数据错误,或数据格式错误认为是偶发情况,重试 } else {