Официальная ссылка

ицированные сетевые вызовы завершаются с ошибкой протокола внезапно в работающем приложении. Приложение работало до вчерашнего дня, и сегодня все сетевые вызовы не выполняются. Вызовы прекрасно работают с HTTP, но не работают с HTTPS.

Вот логи,

java.net.ProtocolException: Expected ':status' header not present
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.Http2xStream.readHttp2HeadersList(Http2xStream.java:262)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.Http2xStream.readResponseHeaders(Http2xStream.java:145)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:53)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
10-18 14:59:01.103 30746-30746/? W/System.err:     at codmob.com.campuswallet.app.ApiClient$1.intercept(ApiClient.java:66)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:109)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:124)
10-18 14:59:01.103 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
10-18 14:59:01.104 30746-30746/? W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
10-18 14:59:01.104 30746-30746/? W/System.err:     at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:170)
10-18 14:59:01.104 30746-30746/? W/System.err:     at okhttp3.RealCall.access$100(RealCall.java:33)
10-18 14:59:01.104 30746-30746/? W/System.err:     at okhttp3.RealCall$AsyncCall.execute(RealCall.java:120)
10-18 14:59:01.104 30746-30746/? W/System.err:     at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
10-18 14:59:01.104 30746-30746/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
10-18 14:59:01.104 30746-30746/? W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
10-18 14:59:01.104 30746-30746/? W/System.err:     at java.lang.Thread.run(Thread.java:761)
 Bajrang Hudda28 мар. 2018 г., 11:10
Вы уже решили это?
 Bajrang Hudda04 апр. 2018 г., 08:27
Попробуйте эту ссылкуstackoverflow.com/q/49643383/3448003

Ответы на вопрос(4)

okhttp3 не очень совместим с протоколом HTTP_1.1 и должен быть добавлен вручную. ты можешь видетьОфициальная ссылка

OkHttpClient.Builder builder = new OkHttpClient.Builder();
//protocols
List<Protocol> protocols = new ArrayList<Protocol>();
protocols.add(Protocol.HTTP_1_1);
protocols.add(Protocol.HTTP_2);
builder.protocols(protocols);
Решение Вопроса

наконец, получил решение Обновление библиотек Retrofit и Okhttp3 до последней версии помогло мне.

compile 'com.squareup.okhttp3:okhttp:3.9.0'

compile 'com.squareup.retrofit2:retrofit:2.3.0'
 IlyaEremin08 дек. 2017 г., 20:11
Это не исправлено, если ваше приложение работает - пользователи продолжают испытывать проблемы до тех пор, пока не обновятся. Ответ @aradon объясняет причину, и более подходящим будет как понижение версии nginx, так и обновление oktthp.
 Faraz Ahmed05 дек. 2017 г., 11:38
С помощью этого исправления моя проблема все еще существует.

Я используюOkHttp2 (2.7.5), и я решил эту проблему, заставив клиента использоватьHTTP 1.1 протокол

OkHttpClient client = new OkHttpClient();
client.setProtocols(Arrays.asList(Protocol.HTTP_1_1)); // <- add this line
 Bajrang Hudda27 мар. 2018 г., 12:31
Что это значит?
 matusalem28 мар. 2018 г., 15:09
@BajrangHudda, возможно, вы или кто-то обновил движок сервера до версии, которая поддерживаетhttp2 протокол. Это была моя причина.
 matusalem28 мар. 2018 г., 16:04
@BajrangHudda Это моя идея:http2 это новый протокол, и кажется, что старый Android не поддерживает его - такOkHttp2 использует толькоhttp1.1 который работает хорошо. Поддержка новых версий Androidhttp2 а такжеOkHttp2 (который не обрабатываетhttp2 хорошо) принимает решение "давайте использовать этот новыйhttp2 протокол, потому что доступен на сервере "- и именно поэтому он не работает.
 Bajrang Hudda28 мар. 2018 г., 14:46
хорошо, я понял вашу точку зрения Но почему приложение вдруг перестает работать? Вчера он работал на том же устройстве, но сегодня он может работать только путем установки протокола. Http.1.1. Почему так?
 matusalem28 мар. 2018 г., 14:35
@BajrangHudda эта строка означает, что вашOkHttp клиент не будет пытаться использоватьhttp2 протокол при наличии. Вам просто нужно вставить эту строку в исходный код вашего клиентского приложения и выпустить новую версию в производство. Вот и все.

на сервере до последней версии (1.13.6). Спросите свою бэкэнд-команду, не обновляли ли они nginx на сервере.

журнал изменений nginx -http://nginx.org/en/CHANGES

 Eldho Paul Konnanal19 окт. 2017 г., 06:58
Обновление до последней версии okhttp3 (3.9.0) и retrofit2 (2.3,0) помогло мне.
 Bajrang Hudda06 апр. 2018 г., 05:49
Но я использую sucuri, в чем может быть причина?
 Neil Patrao18 окт. 2017 г., 13:26
Разместите соответствующие части связанной страницы в ответе, так что даже если страница изменится, ответ все равно будет полезен.stackoverflow.com/help/how-to-answer

Ваш ответ на вопрос