SPDY не работает с OkHttp
Я использую Retrofit 1.6.1 с OkHttp 2.0.0. До сих пор у нас не было SPDY на нашем сервере, но прошлой ночью мы его включили. http://spdycheck.org/ говорит, что SPDY включен на нашем сервере, но когда я пытаюсь сделать вызов API, журналы показывают, что использовался HTTP/1.1:
D/Retrofit(29455): OkHttp-Selected-Protocol: http/1.1
Нужно ли что-то делать, чтобы включить SPDY с OkHttp, или это должно быть обнаружено автоматически?
Вот как я настраиваю вещи:
OkHttpClient okHttp = new OkHttpClient();
okHttp.setConnectTimeout(15 * 1000, TimeUnit.MILLISECONDS);
okHttp.setReadTimeout(15 * 1000, TimeUnit.MILLISECONDS);
okHttp.setWriteTimeout(15 * 1000, TimeUnit.MILLISECONDS);
OkClient okClient = new OkClient(okHttp);
mRestAdapter = new RestAdapter.Builder()
.setEndpoint(BASE_URL)
.setClient(okClient)
.setConverter(new GsonConverter(mGson))
.setErrorHandler(errorHandler)
.setLogLevel(LogLevel.FULL)
.build();
Я тестирую как на Nexus 4 под управлением стоковой Android 4.4.4, так и на Moto G со стоковой ОС и Android 4.4.4
1 ответ
Причина, по которой вы используете устройства okhttp2 и android с уровнем ниже 5.0 (который не поддерживает SPDY), поэтому устройство никогда не пыталось использовать соединение SPDY. И по умолчанию он использует http1.1.
Если ваше устройство> 5,0, okhttp автоматически выберет последний протокол SPDY или HTTP/2. но вы не можете установить / заставить его явно.
Примечание. Okhttp3 не поддерживает SPDY, поэтому не будет пытаться установить SPDY-соединение.