Охттп отправка http запроса после закрытия прокси соединения - PullRequest
0 голосов
/ 24 февраля 2020

Я туннелирую свои запросы через прокси-сервер, который, кажется, закрывает соединение каждые 10-15 секунд. Поэтому, если клиент запрашивает веб-сайт, и это занимает некоторое время, соединение может быть закрыто, и поэтому библиотека okhttp выдает «неожиданный конец потока». Даже если соединение закрыто и библиотека выдает это исключение, сервер успешно получил запрос, но клиент не смог проверить ответ. Если я пытаюсь запросить тот же URL без прокси, у меня нет проблем, и я получаю ответ успешно. Здесь вы можете увидеть это wireshark: захват Wireshark

На фотографии вы можете увидеть в конце запрос, сделанный клиентом в 19: 27: 54 980, а затем через 10 секунд клиент получает пакет FIN TCP. Таким образом, после этого Okhttp выдает это исключение:

java.io.IOException: unexpected end of stream on Connection{m.apuestas.codere.es:443, proxy=HTTP @ /185.163.232.127:58542 hostAddress=/185.163.232.127:58542 cipherSuite=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA protocol=http/1.1}
at okhttp3.internal.http1.Http1Codec.readResponseHeaders(Http1Codec.java:208)
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:88)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at com.telecobets.http.HTTPClient$LoggingInterceptor.intercept(HTTPClient.java:219)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at com.telecobets.http.HTTPClient$AddHeadersInterceptor.intercept(HTTPClient.java:199)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
at okhttp3.RealCall.execute(RealCall.java:77)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:188)
at com.main(Main.java:375)
Caused by: java.io.EOFException: \n not found: limit=0 content=…
at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:237)
at okhttp3.internal.http1.Http1Codec.readHeaderLine(Http1Codec.java:215)
at okhttp3.internal.http1.Http1Codec.readResponseHeaders(Http1Codec.java:189)
... 26 more

Не сервер закрывает соединение, потому что я выполнял разные запросы одновременно к разным серверам, и внезапно в одно и то же время соединения закрывались. Итак, мой вопрос: есть ли способ получить этот ответ, даже если соединение было закрыто прокси-сервером?

Весь захват Wireshark здесь

IP прокси: 185.163.232.127:58542

1 Ответ

0 голосов
/ 05 марта 2020

Поставщик прокси-сервера отключал соединения каждые 10 секунд.

...