我的应用程序拒绝这一点,但是当我卷曲它正在工作的数据时,似乎在某些地方我对如何在Go中压缩这个http有效负载感到困惑。
var buf bytes.Buffer
g := gzip.NewWriter(&buf)
g.Write([]byte("apples")
req, err := http.NewRequest("POST", q.host, bytes.NewReader(buf.Bytes()))
...
req.Header.Set("Content-Type", "text/plain")
req.Header.Set("Content-Encoding", "gzip")
resp, err := client.Do(req)
有人知道我哪里错了吗?
答案 0 :(得分:8)
看起来主要问题是我需要关闭gzip Writer:
b, err := batch.Json()
....
var buf bytes.Buffer
g := gzip.NewWriter(&buf)
if _, err = g.Write(b); err != nil {
slog.Error(err)
return
}
if err = g.Close(); err != nil {
slog.Error(err)
return
}
req, err := http.NewRequest("POST", q.host, &buf)
答案 1 :(得分:4)
另一种方法是使用复制功能
func HttpHandler2(req *http.Request) {
var b bytes.Buffer
var buf bytes.Buffer
g := gzip.NewWriter(&buf)
_, err := io.Copy(g, &b)
if err != nil {
slog.Error(err)
return
}
}