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

如何在 Golang 中复制 http.Get(url) 请求的响应

如何在 Golang 中复制 http.Get(url) 请求的响应

Go
慕盖茨4494581 2021-12-07 16:08:34
我正在尝试使用resp, err := http.Get(url)命令将响应写入文件,并使用相同的响应来提取链接。在我使用 将内容写入文件后resp.Write(f),我不能resp.Body在不发出另一个http.Get请求的情况下将其用于其他目的(用于来自上述 url 的响应)。我试过了resp2 := bytes.NewBuffer(resp)。它给出了错误,因为类型不匹配。我也试过复制。
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

假设响应适合内存,只需创建一个缓冲区并使用resp.Write,例如(未经测试,基本正确):


var b bytes.Buffer

if err := resp.Write(b); err != nil {

   // handle error

} else {

    // Do something with buffer

}

对于适用于任何阅读器的代码,请使用:ioutil.ReadAll,它返回一个新的 []byte ,其中包含您可以包装在 bytes.Buffer 中的数据


查看完整回答
反对 回复 2021-12-07
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

httputil 有一个响应转储。https://golang.org/pkg/net/http/httputil/#DumpRequest 它将用内存副本替换正文,以便您可以重用它。


查看完整回答
反对 回复 2021-12-07
  • 2 回答
  • 0 关注
  • 155 浏览
慕课专栏
更多

添加回答

举报

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