gpt4 book ai didi

go - 我复制 resp.Body 吗?

转载 作者:IT王子 更新时间:2023-10-29 01:52:46 26 4
gpt4 key购买 nike

我正在学习 go,我有以下代码可以正常工作:

resp, err := http.Get(url)  // get the html
...
doc, err := html.Parse(resp.Body) // parse the html page

现在我想先打印出 html 然后再进行解析:

resp, err := http.Get(url)
...
b, err := ioutil.ReadAll(resp.Body) // this line is added, not working now...
doc, err := html.Parse(resp.Body)

我猜是resp.Body是reader的原因,我不能调用read twice?知道如何正确执行此操作吗?复制resp.Body?

最佳答案

因为客户端从网络流式传输响应主体,所以不可能读取主体两次。

像您已经在做的那样读取对 []byte 的响应。使用 bytes.NewReader 在 HTML 解析器的字节上创建一个 io.Reader .

resp, err := http.Get(url)
...
b, err := io.ReadAll(resp.Body)
doc, err := html.Parse(bytes.NewReader(b))

关于go - 我复制 resp.Body 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34915873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com