为了账号安全,请及时绑定邮箱和手机立即绑定

http请求后如何得到响应

http请求后如何得到响应

Go
翻阅古今 2023-05-08 16:34:53
我正在学习围棋,并且是该领域的真正新手。当我尝试复制一些值时遇到问题。我正在做的是:我想使用 httpRequest 在 [response] 中获得一些响应。httpClient := &http.Client{}response, err := httpClient.Do(req)if err != nil {   panic(err)}之后,我想将存储的值保存在'origin.txt'中作为响应origin_ ,_:= ioutil.ReadAll(response.Body)f_, err := os.Create("origin.txt")f_.Write(origin_);我想通过使用 goquery 包来获得特定的价值。doc, err := goquery.NewDocumentFromReader(response.Body)if err != nil {    log.Fatal(err)}doc.Find(".className").Each(func(i int, s *goquery.Selection) {    w.WriteString("============" + strconv.Itoa(i) + "============")    s.Find("tr").Each(func(i int, s_ *goquery.Selection) {    fmt.Println(s_.Text())    w.WriteString(s_.Text())        })})但在这种情况下,我可以从 2) 中得到我想要的值,但不能从 3) 中得到任何值。起初,我认为问题在于,3) 处的响应对象受 2) 操作的影响。因为它是一个参考对象。所以我试图将它复制到另一个对象,然后再做一次。origin := *response但是,我得到了与第一个相同的结果。我应该怎么办?如何通过其值将参考值分配给另一个参考值?我应该为每次尝试请求两次吗?
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

然而,话虽这么说不origin := *response会给你带来太多好处。数据 ( response.Body) 是一个io.ReadCloser. 将ioutil.ReadAll()使用并存储流中的所有数据。你只能这样做一次。

但是,您将数据存储在origin. 如果您需要另一个io.Reader用于该数据(例如案例 3),那么您可以使该字节切片io.Reader再次看起来像:bytes.NewReader(origin)


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信