RPC请求结果支持对编码进行处理
This commit is contained in:
22
rpc.go
22
rpc.go
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user