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

如何在 Go 中正确使用 http.ReadResponse?

如何在 Go 中正确使用 http.ReadResponse?

Go
MMMHUHU 2022-05-23 16:52:19
我正在尝试向服务器发送请求并使用http.ReadResponse函数接收响应,但问题是它被阻止并且没有收到任何内容。首先,我认为我使用了不正确的请求,所以现在我使用nil作为第二个参数来发送默认的 GET 请求(如文档中所述),但没有任何改变。也许我使用bufio.Reader不正确,但我真的不这么认为,因为http.ReadRequest效果很好。func main() {    var conn, _ = net.Dial("tcp", "localhost:80")    defer conn.Close()    var (        reader        = bufio.NewReader(conn)        response, err = http.ReadResponse(reader, nil)    )    if err == nil {        fmt.Println(*response)    }}
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

您的请求将不起作用。通过创建套接字,当您应该发送第 7 层请求时,您正在发送第 4 层请求(http 是应用程序层的一部分)。幸运的是,httpgo 中的库已经实现了Get. 因此,要完成您想要的,只需执行以下操作:

resp, _ http.Get("localhost:80")
body, _ = ioutil.ReadAll(resp.Body)

然后你可以把 body 扔进 Go 的 JSON Handler 或者把它变成一个字符串。


查看完整回答
反对 回复 2022-05-23
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

我的错:我错误地解释了文档的功能描述。我认为该http.ReadResponse函数在收到响应之前发送了传递给它的请求(“否则为什么需要请求参数?” - 我想)。但正如我现在所看到的,这个参数需要用于其他目的,也许我猜想是为了什么,但这超出了本主题的范围。



查看完整回答
反对 回复 2022-05-23
  • 2 回答
  • 0 关注
  • 318 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号