http/2 使用 Go 连接到 Alexa 语音服务时遇到问题
Having trouble connecting to Alexa Voice Service with http/2 using Go
我正在尝试按照描述建立下行通道here under Creating an http/2 connection.我正在用Go编写我的客户端,我的代码如下:
api_endpoint := "https://avs-alexa-na.amazon.com/v1/directives"
access_token := fetchAccessToken() //retrieves token from local file
req, err := http.NewRequest("GET", api_endpoint, nil)
if(err != nil){
panic(err)
}
req.Header.Add("authorization", fmt.Sprintf("Bearer %s", access_token))
client := &http.Client{}
res, err := client.Do(req)
if(err != nil){
panic(err)
}
问题是我的客户端在请求后出现以下错误:获取 https://avs-alexa-na.amazon.com/v1/directives:格式错误的 HTTP 响应“\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x10\x00\x00\x03\x00\x00\x00”。
我不知道该如何处理。我怀疑 Go 出于某种原因没有使用 http/2,因此无法处理响应,但我不知道为什么会这样。我正在使用 Go 1.6.1,它应该会自动使用它。任何帮助将不胜感激。
事实证明问题是 Go 1.6.1 中的一个错误导致 HTTP 客户端默认不使用 http/2。升级到 1.6.2 解决了这个问题。 Github 问题:https://github.com/golang/go/issues/14391
我正在尝试按照描述建立下行通道here under Creating an http/2 connection.我正在用Go编写我的客户端,我的代码如下:
api_endpoint := "https://avs-alexa-na.amazon.com/v1/directives"
access_token := fetchAccessToken() //retrieves token from local file
req, err := http.NewRequest("GET", api_endpoint, nil)
if(err != nil){
panic(err)
}
req.Header.Add("authorization", fmt.Sprintf("Bearer %s", access_token))
client := &http.Client{}
res, err := client.Do(req)
if(err != nil){
panic(err)
}
问题是我的客户端在请求后出现以下错误:获取 https://avs-alexa-na.amazon.com/v1/directives:格式错误的 HTTP 响应“\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\x01\x00\x00\x10\x00\x00\x03\x00\x00\x00”。
我不知道该如何处理。我怀疑 Go 出于某种原因没有使用 http/2,因此无法处理响应,但我不知道为什么会这样。我正在使用 Go 1.6.1,它应该会自动使用它。任何帮助将不胜感激。
事实证明问题是 Go 1.6.1 中的一个错误导致 HTTP 客户端默认不使用 http/2。升级到 1.6.2 解决了这个问题。 Github 问题:https://github.com/golang/go/issues/14391