RPC请求结果支持对编码进行处理

This commit is contained in:
2022-10-14 12:12:38 +08:00
parent 739a50167e
commit cc32decb80
3 changed files with 35 additions and 9 deletions

22
rpc.go
View File

@ -360,9 +360,9 @@ func (r *request) Send(ctx *gin.Context, serviceFlag string, apiFlag string, par
func (r *request) getResponseBody(response *httpclient.Response) ([]byte, error) {
var (
responseBody []byte
err error
err error
gzipInstance *gzip.Reader
buf bytes.Buffer
buf bytes.Buffer
)
if responseBody, err = io.ReadAll(response.Body); nil != err {
return nil, err
@ -371,14 +371,26 @@ func (r *request) getResponseBody(response *httpclient.Response) ([]byte, error)
responseGzip := response.Header.Get("content-encoding")
if strings.ToLower(responseGzip) == "gzip" {
// 压缩过的数据在处理response body
if gzipInstance, err =gzip.NewReader(bytes.NewReader(responseBody)); nil != err {
if gzipInstance, err = gzip.NewReader(bytes.NewReader(responseBody)); nil != err {
return nil, err
}
defer gzipInstance.Close()
defer func() {
_ = gzipInstance.Close()
}()
if _, err = io.Copy(&buf, gzipInstance); nil != err {
return nil, err
}
return buf.Bytes(), nil
responseBody = buf.Bytes()
}
// 判断是否为gbk编码,若是,转为utf8
isGBK := strings.Contains(strings.ToLower(response.Header.Get("content-type")), "gbk")
if isGBK {
return []byte(util.String.Convert(string(responseBody), "gbk", "utf-8")), nil
}
// 判断是否为gb2312,若是,转为utf8
isGB2312 := strings.Contains(strings.ToLower(response.Header.Get("content-type")), "gb2312")
if isGB2312 {
return []byte(util.String.Convert(string(responseBody), "gb2312", "utf-8")), nil
}
return responseBody, nil
}