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

我正在尝试向服务器发送请求并使用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)

    }

}


MMMHUHU
浏览 319回答 2
2回答

米脂

您的请求将不起作用。通过创建套接字,当您应该发送第 7 层请求时,您正在发送第 4 层请求(http 是应用程序层的一部分)。幸运的是,httpgo 中的库已经实现了Get. 因此,要完成您想要的,只需执行以下操作:resp, _ http.Get("localhost:80") body, _ = ioutil.ReadAll(resp.Body)然后你可以把 body 扔进 Go 的 JSON Handler 或者把它变成一个字符串。

慕妹3242003

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

相关分类

Go