Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Golang中复制http.Get(url)请求的响应_Go_Net Http - Fatal编程技术网

如何在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。我也尝试过复制。

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


对于与任何读取器一起工作的代码,请使用:,它返回一个新的[]字节,其中包含可以用字节包装的数据。Buffer

httputil有一个响应转储。
它将用内存中的副本替换正文,以便您可以重复使用。

您可以共享代码吗?一旦您已将响应正文排空,您就无法读取响应正文。您是否尝试在缓冲响应上使用?这将生成带有头信息的新文件,并且在
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
}