fix: 修复gzip乱码
This commit is contained in:
@@ -4,6 +4,7 @@ package proxy
|
|||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"compress/gzip"
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -343,10 +344,26 @@ func (ps *ProxyServer) executeRequestWithRetry(c *gin.Context, startTime time.Ti
|
|||||||
|
|
||||||
// Read response body to get error information
|
// Read response body to get error information
|
||||||
var errorMessage string
|
var errorMessage string
|
||||||
if bodyBytes, err := io.ReadAll(resp.Body); err == nil {
|
bodyBytes, err := io.ReadAll(resp.Body)
|
||||||
errorMessage = string(bodyBytes)
|
if err != nil {
|
||||||
|
errorMessage = fmt.Sprintf("HTTP %d (failed to read body: %v)", resp.StatusCode, err)
|
||||||
} else {
|
} else {
|
||||||
errorMessage = fmt.Sprintf("HTTP %d", resp.StatusCode)
|
if resp.Header.Get("Content-Encoding") == "gzip" {
|
||||||
|
reader, gErr := gzip.NewReader(bytes.NewReader(bodyBytes))
|
||||||
|
if gErr != nil {
|
||||||
|
errorMessage = fmt.Sprintf("gzip reader error: %v", gErr)
|
||||||
|
} else {
|
||||||
|
uncompressedBytes, rErr := io.ReadAll(reader)
|
||||||
|
reader.Close()
|
||||||
|
if rErr != nil {
|
||||||
|
errorMessage = fmt.Sprintf("gzip read error: %v", rErr)
|
||||||
|
} else {
|
||||||
|
errorMessage = string(uncompressedBytes)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
errorMessage = string(bodyBytes)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var jsonError struct {
|
var jsonError struct {
|
||||||
|
Reference in New Issue
Block a user