Pregunta

Mi Apache HTTP de cliente está leyendo datos desde un servidor que está enviando la transmisión HTTP (en forma de datos fragmentada) para nosotros.

Tengo un flujo de entrada y tamponada Reader para obtener los datos, y la lectura de estos datos utilizando el método de datos en el búfer readLine.

InputStream inputStream = httpEntity.getContent();
br= new BufferedReader(new InputStreamReader(inputStream));

while ((line = br.readLine()) != null) 

Quiero cerrar la conexión si me da una respuesta incorrecta del servidor.

Para este Estoy creando un TimerTask en un intervalo de tiempo para cerrar la conexión. Estoy analizar la respuesta cada vez que lo reciba para comprobar si la respuesta es correcta, si la respuesta es correcta, entonces se restablece el TimeTask. Si encuentro una respuesta equivocada en ese caso no se restablece la TimerTask (y dejar que el TimerTask ser ejecutado a la vez que se haya establecido previamente para)

Quiero saber si se utiliza sin búfer I / O puede ayudar? o necesito algún otro enfoque?

problema que veo es ya que la conexión está abierta, mi TimerTask es incapaz de cerrar la conexión. inputStream.close o bufferReader.close tanto no son capaces de ejecutar (parece que esperar infinitamente)

¿Fue útil?

Solución

BufferReader.close() sólo se cerrará el flujoEntrada, que a su vez llamará inputStream.close(). De acuerdo con la InputStream.close() API de Java no hace nada. Es necesario para cerrar el socket, o lo que sea que usted está abstrayendo por httpEntity.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top