如何在Golang中复制http.Get(url)请求的响应
我试图使用如何在Golang中复制http.Get(url)请求的响应,go,net-http,Go,Net Http,我试图使用resp,err:=http.Get(url)命令将响应写入文件,并使用相同的响应提取链接 在我使用resp.write(f)将内容写入文件后,如果不发出另一个http.Get请求,我无法将resp.Body用于其他目的(用于上述url的响应) 我尝试了resp2:=bytes.NewBuffer(resp)。当类型不匹配时,它会给出eror。我也尝试过复制。假设响应适合内存,只需创建一个缓冲区并使用,如(未测试,基本正确): 对于与任何读取器一起工作的代码,请使用:,它返回一个新的[
resp,err:=http.Get(url)
命令将响应写入文件,并使用相同的响应提取链接
在我使用resp.write(f)
将内容写入文件后,如果不发出另一个http.Get
请求,我无法将resp.Body
用于其他目的(用于上述url的响应)
我尝试了
resp2:=bytes.NewBuffer(resp)
。当类型不匹配时,它会给出eror。我也尝试过复制。假设响应适合内存,只需创建一个缓冲区并使用,如(未测试,基本正确):
对于与任何读取器一起工作的代码,请使用:,它返回一个新的[]字节,其中包含可以用字节包装的数据。Bufferhttputil有一个响应转储。
它将用内存中的副本替换正文,以便您可以重复使用。您可以共享代码吗?一旦您已将响应正文排空,您就无法读取响应正文。您是否尝试在缓冲响应上使用?这将生成带有头信息的新文件,并且在
resp.write(f)
上没有正文。顺便说一句,感谢@JimB回答前面的问题。您能否提供ReadResponse的示例。您可能希望传递对缓冲区的引用,如resp.Write(&b)
,以避免无法将“b”(type bytes.buffer)用作io.Writer类型的错误。
var b bytes.Buffer
if err := resp.Write(b); err != nil {
// handle error
} else {
// Do something with buffer
}