2016-05-20 13 views
1

Ich versuche, mit einem HTTP/2-Server mit OkHttp Client zu kommunizieren.HTTP/2 mit OkHttp

hinzugefügt Maven POM:

<dependency> 
    <groupId>com.squareup.okhttp3</groupId> 
    <artifactId>okhttp</artifactId> 
    <version>3.2.0</version> 
</dependency>  

Und das ist mein Testcode:

OkHttpClient client = new OkHttpClient(); 
Request request = new Request.Builder().url("https://http2.akamai.com/demo").build(); 
Response response = client.newCall(request).execute(); 
System.out.println("Protocol: " + response.protocol()); 
System.out.println(response.body().string()); 

Aber wenn ich es laufen druckt:

Protokoll: http/1.1

und

Dieser Browser ist nicht HTTP/2 aktiviert.

Umgebung: OpenJDK 8 unter Linux.

Brauchen Sie etwas Zusätzliches? Ich sah etwas "ALPN" genannt, aber das Konzept nicht verstanden.

Antwort

5

ALPN wird für HTTP/2 benötigt, ist aber in Desktop Java erst ab JDK 9 verfügbar. In Java 7 und Java 8 benötigen Sie einen Hack namens jetty-alpn, um es zu aktivieren.

(Für Java 9 gibt es ALPN auf der Plattform, aber nur in der kommenden OkHttp 3.3.)