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

Septemberrrrrr · · 1936 次点击
如果服务端拿到的 `ContentLength` 是 5900,但是只读取了 3759 的字节, 1. 可能是客户端未发送够 5900 个字节就关闭了连接 2. 服务端的读取超时时间到了,客户端还没发送完毕。 看看 Go 服务端的 `ReadTimeout` 是不是设置短了。 https://github.com/golang/go/blob/f90b4cd6554f4f20280aa5229cf42650ed47221d/src/net/http/server.go#L2637-L2645 或者看看是不是客户端 `WriteTimeout` 设置太短了。
#4
更多评论
data := make([]byte, r.ContentLength + 200) 解决
#1
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