新手 求助(关于net/http包request对象请求体内容解析字节丢失问题)

Septemberrrrrr · · 1905 次点击
1楼 <a href="/user/a984120978" title="@a984120978">@a984120978</a> ``` func webhook(w http.ResponseWriter, r *http.Request) { bufReader := bufio.NewReader(r.Body) defer r.Body.Close() data := make([]byte, r.ContentLength+200) n, err := bufReader.Read(data) fmt.Println(&#34;总长度为&#34;, r.ContentLength) fmt.Println(&#34;定义的buff长度&#34;, len(data)) fmt.Println(&#34;读取的长度&#34;, n) if err != nil { fmt.Println(&#34;Error reading request body:&#34;, err) return } } ``` 输出: ``` 总长度为 5900 定义的buff长度 6100 读取的长度 3759 ``` 我不理解,为什么实际读取的数据和ContentLength的长度不一致
#2
更多评论
data := make([]byte, r.ContentLength + 200) 解决
#1
~~`r.ContentLength` 是接口的 Response Header 返回的, 也就是 `r.Header.Get(&#34;Content-Length&#34;)`,由服务端决定。你可以看一下 `net/http/transfer.go:523`。~~ 看错了,以为是 http 请求响应的
#3