我尝试通过request.GetBody()读取请求体,因为我需要多次读取同一个请求体,但我总是得到以下错误.我检查了req.body是否为空,但事实并非如此.我甚至不能打电话给req.GetBody().我的Go版本是1.8.1.
func read(res http.ResponseWriter, req *http.Request) {
_, err := req.GetBody()
if err != nil {
res.Write([]byte(err.Error()))
return
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
http: panic serving [::1]:53174: runtime error: invalid memory address or nil pointer dereference
Run Code Online (Sandbox Code Playgroud)
Pau*_*ulJ 15
该GetBody()FUNC上Request仅适用于客户端的请求(参见在文档GetBody成员:https://golang.org/pkg/net/http/#Request),但它看起来像你正在做一个服务器端的处理程序.因此,您需要使用req.Body成员,这是一个io.ReadCloser.要从中读取,io.ReadCloser您可以使用io/ioutil包和ReadAll()func:
b, err := ioutil.ReadAll(req.Body)
if err != nil {
panic(err)
}
fmt.Printf("%s", b)
Run Code Online (Sandbox Code Playgroud)
有关ReadAll()func的更多信息:https://golang.org/pkg/io/ioutil/#example_ReadAll
| 归档时间: |
|
| 查看次数: |
10702 次 |
| 最近记录: |