如何在 Golang 中使用 HTTP/2 写入/读取/发送数据帧?

Posted

技术标签:

【中文标题】如何在 Golang 中使用 HTTP/2 写入/读取/发送数据帧?【英文标题】:How to write/read/send a data Frame using HTTP/2 in Golang? 【发布时间】:2016-11-12 20:14:33 【问题描述】:

我想知道如何使用 HTTP/2 来编写、读取和发送帧,例如数据帧。我知道 Golang 库 net/http 支持这个新协议,但我不知道如何正确地做上述方面。

提前谢谢你!

【问题讨论】:

【参考方案1】:

尝试像这样发送http2请求

首先需要导入http2包

import "golang.org/x/net/http2"

然后,写一些请求代码

t := &http2.Transport
c := &http.Client
    Transport: t,

r, _ := http.NewRequest("GET", "https://http2.golang.org/reqinfo", bytes.NewBuffer([]byte("hello")))
resp, err := c.Do(r)
if err != nil 
    fmt.Printf("request error")

defer resp.Body.Close()
content, _ := ioutil.ReadAll(resp.Body)
fmt.Printf("body length:%d\n", len(content))

【讨论】:

您没有在定义后的任何地方使用变量“t”和“r”。那么你为什么要定义它们呢? t 用作http.Client 中的传输,r 用于调用c.Do(r) 并表示请求。

以上是关于如何在 Golang 中使用 HTTP/2 写入/读取/发送数据帧?的主要内容,如果未能解决你的问题,请参考以下文章

在golang磁盘写入性能

如何让我的用 Golang 编写的 Web 服务器支持 HTTP/2 服务器推送?

golang Golang:读取文件并使用参数写入磁盘

为啥我的 Golang 频道写入永远阻塞?

golang 正确的 http2 请求

如何使用Golang将文件添加到现有的zip文件中