Я только что обновился с okhttp2 + дооснащения до okhttp3 + дооснащения2, но не могу заставить http2 работать на клиенте Android.
Мой сервер работает под управлением nginx 1.14.0 с включенным http2.(iOS-клиент работает нормально на http2)
Вот код, который создает okhttp-клиент
private static OkHttpClient createOkHttpClient(Application app,
NetworkInterceptor networkInterceptor,
HttpLoggingInterceptor httpLoggingInterceptor) {
// Install an HTTP cache in the application cache directory.
File cacheDir = new File(app.getCacheDir(), "http");
Cache cache = new Cache(cacheDir, DISK_CACHE_SIZE);
Security.insertProviderAt(
new org.conscrypt.OpenSSLProvider(), 1);
OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient().newBuilder()
.cache(cache)
.connectTimeout(15, TimeUnit.SECONDS)
.readTimeout(15, TimeUnit.SECONDS)
.writeTimeout(15, TimeUnit.SECONDS)
.callTimeout(30, TimeUnit.SECONDS)
.protocols(Arrays.asList(Protocol.HTTP_2, Protocol.HTTP_1_1))
.followRedirects(true)
.followSslRedirects(true)
.addInterceptor(networkInterceptor)
.addInterceptor(httpLoggingInterceptor);
if (BuildConfig.DEBUG) {
okHttpClientBuilder.addNetworkInterceptor(new StethoInterceptor());
}
return okHttpClientBuilder.build();
}
Я использую кинжал 2 для создания Api с модификацией 2.
Мое тестовое устройство работает под управлением Android 8.1.
Я прочитал документацию, и эта установка должна работать под управлением http2.Что-то не так с моей реализацией?