假设我只想获取一个页面的cookie信息,并关心它返回的内容,也就是不读取Response.Body,是否还需要自己去关闭一下body呢(Response.Body.Close())? 第一次上来提问,方法不对的地方请见谅。
有疑问加站长微信联系(非本文作者)

假设我只想获取一个页面的cookie信息,并关心它返回的内容,也就是不读取Response.Body,是否还需要自己去关闭一下body呢(Response.Body.Close())? 第一次上来提问,方法不对的地方请见谅。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
因该都不需要关闭手动关闭吧,下面是源码上面写的备注,说: The Server will close the request body. The ServeHTTP // Handler does not need to. Body io.ReadCloser
// Body is the request's body. // // For client requests a nil body means the request has no // body, such as a GET request. The HTTP Client's Transport // is responsible for calling the Close method. // // For server requests the Request Body is always non-nil // but will return EOF immediately when no body is present. // The Server will close the request body. The ServeHTTP // Handler does not need to. Body io.ReadCloser
源码里面有如下: func (c *conn) serve() { .... serverHandler{c.server}.ServeHTTP(w, w.req) if c.hijacked() { return } w.finishRequest() if w.closeAfterReply { if w.requestBodyLimitHit { c.closeWriteAndWait() } break } .... } 处理完毕以后标准库会自动关闭链接的。
你说的是服务端的关闭部分吧?如果我是作为客户端呢?
是的,上一个是服务端,如果是模拟客户端的话应该都需要关闭的。 下面是源码注释:
// The http Client and Transport guarantee that Body is always // non-nil, even on responses without a body or responses with // a zero-length body. It is the caller's responsibility to // close Body.
原来不管有没有读取Body部分都需要关闭呀,好,谢谢啦!