tutorial ejemplo java httpurlconnection persistent

java - ejemplo - spring security jwt



Conexión HTTP persistente en Java (2)

Estoy intentando escribir un programa java que se descargará automáticamente y nombrará algunos de mis cómics web favoritos. Como solicitaré varios objetos del mismo dominio, quise tener una conexión http persistente que pudiera mantener abierta hasta que se hayan descargado todos los cómics. A continuación se muestra mi trabajo en progreso. ¿Cómo hago otra solicitud desde el mismo dominio pero con una ruta diferente sin abrir una nueva conexión http?

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class ComicDownloader { public static void main(String[] args) { URL url = null; HttpURLConnection httpc = null; BufferedReader input = null; try { url = new URL("http://www.cad-comic.com/cad/archive/2002"); httpc = (HttpURLConnection) url.openConnection(); input = new BufferedReader(new InputStreamReader(httpc.getInputStream())); String inputLine; while ((inputLine = input.readLine()) != null) { System.out.println(inputLine); } input.close(); httpc.disconnect(); } catch (IOException ex) { System.out.println(ex); } } }


De acuerdo con este enlace http://docs.oracle.com/javase/6/docs/technotes/guides/net/http-keepalive.html , la reutilización de la conexión HTTP está habilitada de manera predeterminada, puede usar Wireshark para verificar las interacciones entre su cliente y servidor La primera solicitud contiene protocolos TCP y SSL (si su solicitud es https), las solicitudes posteriores activadas en el tiempo de mantenimiento, no contienen protocolos TCP y SSL, solo transferencias de datos de la aplicación.


De acuerdo con la documentación aquí , la persistencia de HTTP se maneja de manera transparente en Java, aunque le brinda las opciones para controlarlo también a través de las propiedades del sistema http.keepAlive y http.maxConnections .

Sin embargo,

La implementación actual no amortigua el cuerpo de respuesta. Lo que significa que la aplicación debe terminar de leer el cuerpo de la respuesta o llamar a close () para abandonar el resto del cuerpo de la respuesta, para que esa conexión se pueda reutilizar. Además, la implementación actual no intentará leer en bloque al limpiar la conexión, lo que significa que si el cuerpo de respuesta completo no está disponible, la conexión no se reutilizará.

Eche un vistazo al enlace y vea si realmente le ayuda.