2015-08-06 1 views
10

Я тестирую сайт, который поддерживает HTTP/2, like this, и я пытаюсь использовать okhttp отправить запрос:Как использовать http/2 с Okhttp на устройствах Android?

OkHttpClient okHttpClient = new OkHttpClient(); 

Request request = new Request.Builder() 
     .url("https://www.google.it") 
     .build(); 


okHttpClient.newCall(request).enqueue(new Callback() { 
    @Override 
    public void onFailure(Request request, IOException e) { 
     e.printStackTrace(); 
    } 

    @Override 
    public void onResponse(Response response) throws IOException { 
     Log.d("TestHttp", "OkHttp-Selected-Protocol: " + response.header("OkHttp-Selected-Protocol")); 
     Log.d("TestHttp", "Response code is " + response.code()); 
    } 
}); 

В журнале я получил что-то вроде этого:

OkHttp-Selected-Protocol: http/1.1 

OkhttpClient решил использовать http/1.1, как я могу заставить его использовать HTTP/2?

+0

Я нашел [это] (https://github.com/square/okhttp/issues/1455#issuecomment-75818950), он швы, что поддержка okhttp h2-16 и выше. – Zack

+0

который okHttp вы используете? на основе этого https://publicobject.com/2015/03/17/okhttp-2-3-has-http2/ version 2.3 есть http/2 – Yazan

+0

@Yazan Я использую версию 2.4.0 – Zack

ответ

3

Okhttp 2.5+ поддерживает только http/2 выше 5.0+ через ALPN.

, но вы можете изменить исходный код, чтобы поддерживать HTTP/2 выше 4.0+ через NPN.

Смежные вопросы