Моя программа читает этот большой файл GZIP и работает в течение часа и так и не удается с помощью следующей трассировки стека:Могу ли я использовать ответ объекта после инициализации GZIPInputStream?
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
at sun.security.ssl.InputRecord.read(InputRecord.java:480)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:166)
at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:90)
at org.apache.http.impl.io.AbstractSessionInputBuffer.read(AbstractSessionInputBuffer.java:212)
at org.apache.http.impl.conn.LoggingSessionInputBuffer.read(LoggingSessionInputBuffer.java:82)
at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:182)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:138)
at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:238)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:116)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at com.trainchaser.feed.connections.StaticConnect.getScheduleFile(StaticConnect.java:116)
at com.trainchaser.app.App.main(App.java:32)
, где линия StaticConnect.getScheduleFile(StaticConnect.java:116)
является цикл в то время как в коде ниже.
Я читал подобные сообщения, и я закрываю читателя (in
) после того, как он прочитал цикл while, но все равно дал мне ту же ошибку. Поэтому я думаю, что, может быть, если я буду использовать объект, он будет работать так:
HttpEntity entity=getResponse.getEntity();
BufferedReader in = new BufferedReader(new InputStreamReader(
new GZIPInputStream(entity.getContent())));
EntityUtils.consumeQuietly(entity);
try
{
while ((content = in.readLine()) != null)
{...
Будет ли это работать? Я думал, может быть, если я временно сохраню файл gzip и не буду постоянно связывать соединение, это поможет предотвратить ошибку. Я бы сам ее протестировал, но в настоящее время тестирую исправление отключения брандмауэра, чтобы увидеть, все ли ошибки.
Я использую org.apache.http.HttpEntity
, если это помогает
Как насчет того, чтобы сообщить нам, какую библиотеку http вы используете? –
@ StephenC, спасибо, я отредактировал вопрос соответствующим образом. – obsessiveCookie