У меня есть приложение, которое использует:Ошибка выброшен в OKHttpClient версии 3.2.0 с использованием SPDY версии 3
compile 'com.squareup.okhttp3:okhttp:2.7.0'
compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0'
compile 'com.squareup.okio:okio:1.6.0'
compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'
И делает API REST вызовы к серверу. При включении SPDY 3 на OKHttpClient, выдается ошибка:
04-08 11:01:22.321 10628-10628/dts W/System.err: java.lang.IllegalArgumentException: protocols doesn't contain http/1.1: [spdy/3.1, h2]
04-08 11:01:22.321 10628-10628/dts W/System.err: at okhttp3.OkHttpClient$Builder.protocols(OkHttpClient.java:672)
Я не могу найти что-нибудь на OKHttpClient правильно позволяет SPDY/3 или код ошибки. На целевом сайте настроен SPDY/3.
Я попытался как конфиги протокол со всеми комбо SPDY3, HTTP/2 & HTTP/1, приложение работает, когда HTTP/1 сконфигурирован, но бросает ошибку, если SPDY/3 включен только:
okHttpClient = new OkHttpClient.Builder()
// .protocols(Collections.singletonList(Protocol.SPDY_3))
.protocols(Arrays.asList(Protocol.SPDY_3, Protocol.HTTP_2))
.retryOnConnectionFailure(true)
.connectTimeout(25, TimeUnit.SECONDS)
.connectionPool(new ConnectionPool(30, 120, TimeUnit.SECONDS))
.connectionSpecs(Collections.singletonList(spec))
.addInterceptor(new AddCookiesInterceptor())
.addInterceptor(new ReceivedCookiesInterceptor())
.cache(new okhttp3.Cache(cacheLocation, (500 * 1024 * 1024)))
.build();
}
Я знаю, что у кого-то могут быть идеи, любая помощь будет очень признательна.
Я нашел это в документации [ссылка] (https://square.github.io/okhttp/2.x/okhttp/com/squareup/okhttp/OkHttpClient.html) но без помощи при настройке SPDY/3: Параметры: протоколы - протоколы для использования в порядке предпочтения. Список должен содержать протокол.HTTP_1_1. Он не должен содержать null или Protocol.HTTP_1_0. – DoctorD