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

L.f*_*ole 0 go net-http

我正在尝试使用resp, err := http.Get(url)命令将响应写入文件以及使用相同的响应来提取链接。

使用将内容写入文件后resp.Write(f),如果resp.Body没有其他http.Get请求,就无法用于其他目的(来自上述url的响应)。

我试过了resp2 := bytes.NewBuffer(resp)。由于类型不匹配,因此会给出错误。我也尝试过复制。

Dav*_*rth 5

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

var b bytes.Buffer
if err := resp.Write(b); err != nil {
   // handle error
} else {
    // Do something with buffer
}
Run Code Online (Sandbox Code Playgroud)

对于可与任何阅读器一起使用的代码,请使用:ioutil.ReadAll,它返回一个新的[] byte,其中包含您可以包装成一个字节的数据。