2015-08-06 1 views
10

Je teste un site qui prend en charge HTTP/2, like this, et je tente d'utiliser okhttp pour envoyer la demande:Comment utiliser http/2 avec Okhttp sur les appareils 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()); 
    } 
}); 

Dans le journal je suis arrivé quelque chose comme ceci:

OkHttp-Selected-Protocol: http/1.1 

Le okhttpClient a choisi d'utiliser http/1.1, comment puis-je le forcer à utiliser HTTP/2?

+0

J'ai trouvé [this] (https://github.com/square/okhttp/issues/1455#issuecomment-75818950), Il semble que le okhttp supporte h2-16 et plus. – Zack

+0

quel ok utilisez-vous? sur la base de ce https://publicobject.com/2015/03/17/okhttp-2-3-has-http2/ version 2.3 ont le http/2 – Yazan

+0

@Yazan J'utilise la version 2.4.0 – Zack

Répondre

3

Okhttp 2.5+ ne supporte que http/2 au dessus de 5.0+ via ALPN.

mais vous pouvez modifier le code source pour prendre en charge http/2 au-dessus de 4.0+ via NPN.