我的错误在这里解释得很清楚: https://github.com/golang/go/issues/17088
我不知道这是否是对http包概念的误解,但是在发送请求(client.Do)后,我无法返回请求的“body”(我的POST请求发送的参数)。 。
示例:
func showRequestBody(r *http.Request) {
fmt.Println(r)
fmt.Println(r.Body)
}
给我一张空地图或当我这样做时:r.Form或r.PostForm它是零或空的。
谢谢:)(更多信息和github链接上的优秀代码突出显示)
答案 0 :(得分:0)
Body不是一个字符串而是一个Reader(更具体地说是ReadCloser)。当你读取一些字节时,你从流中取出它,你就不能再读它了。
如果您确实需要在发送之前拦截Body,并且无法再从源中读取,则解决方案是在从缓冲区重建新的ReadCloser之前将其读入缓冲区。
编辑:此时我意识到这主要是Reading body of http.Request without modifying request state?的重复,我投票结束。如果没有任何结果,我可能会删除答案。