我正在尝试使用fstream
命令将响应写入文件,并使用相同的响应来提取链接。
使用fstream f("myfile.txt",std::fstream::in | std::fstream::out);
f.seekg(-1,is.f.end); // move the the end
char c;
f.get(c);
if (c=='\n') ...
else ...
将内容写入文件后,我无法将resp, err := http.Get(url)
用于其他目的(针对上述网址的响应),而无需再发出resp.Write(f)
次请求。
我试过了resp.Body
。它给出了类型不匹配的错误。我也尝试过复制。
答案 0 :(得分:4)
假设响应适合内存,只需创建一个缓冲区并使用resp.Write,如(未经测试,基本上正确):
var b bytes.Buffer
if err := resp.Write(b); err != nil {
// handle error
} else {
// Do something with buffer
}
对于适用于任何阅读器的代码,请使用:ioutil.ReadAll,它返回一个新的[]字节,其中包含您可以在bytes.Buffer中包装的数据
答案 1 :(得分:2)
httputil有一个响应转储。 https://golang.org/pkg/net/http/httputil/#DumpRequest 它将使用内存中的副本替换正文,以便您可以重复使用它。