为了账号安全,请及时绑定邮箱和手机立即绑定

即使我没有阅读它,我是否需要关闭 http 请求的响应正文?

即使我没有阅读它,我是否需要关闭 http 请求的响应正文?

Go
翻阅古今 2022-10-24 15:16:53
我有以下代码:resp, err = http.Head("http:something.com")if err != nil {    //do something}if resp.StatusCode == http.StatusOK {    // do something     }由于我没有阅读正文,因此resp我假设我不需要像resp.Body.Close(). 我的假设是正确的还是应该打电话resp.Body.Close()?
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

http.Head()是一个包装器,它围绕DefaultClient.Head()哪些问题Client.Do()记录以下内容:

如果返回的错误为 nil,则 Response 将包含一个非 nil Body,用户应该关闭它。如果 Body 没有被读取到 EOF 并关闭,则客户端的底层 RoundTripper(通常是 Transport)可能无法重新使用与服务器的持久 TCP 连接来进行后续的“保持活动”请求。

这应该足以让您关闭它。

即使您使用的是 HTTP HEAD 方法,这也只是对服务器的“建议”。不符合 RFC 的服务器可能会返回一个正文,即使它不应该(对于 HEAD 请求),Go 的net/http库可能会通过Response.Body. 所以你应该关闭它。即使没有尸体被发送或呈现给您,关闭它也不会造成任何伤害。


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信