2016-05-19 6 views
1

Я пытаюсь установить downchannel, как описано here under Creating an http/2 connection. Я пишу моего клиента в Go, и мой код выглядит следующим образом:Возникли проблемы подключения к Alexa голосовой службы с HTTP/2 с помощью 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) 
} 

Проблема что мой клиент дает следующую ошибку после запроса: Get 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, который должен использовать его автоматически. Любая помощь будет принята с благодарностью.

ответ

1

Оказалось, что проблема связана с ошибкой в ​​Go 1.6.1, которая заставила HTTP-клиенты не использовать HTTP/2 по умолчанию. Модернизация до 1.6.2 решила проблему. Github Issue: https://github.com/golang/go/issues/14391