ROME analiza los bytes del feed; la ruta del proxy y la cuenta deben ser del cliente HTTP. Para un JDK HttpClient elegido, un proxy fijo va en su builder:

HttpClient client = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("proxy.example", 8080)))
    .build();

Para una prueba de feed público permitida sin autenticación de proxy, sustituye el host y el puerto de ejemplo por un candidato de la lista de proxies HTTP. Añade la autenticación del despliegue y los límites de peticiones a ese cliente. Cuando obtenga una respuesta aceptable, entrega el flujo a ROME:

try (XmlReader reader = new XmlReader(body, contentType)) {
    SyndFeed feed = new SyndFeedInput().build(reader);
}

Los imports modernos son com.rometools.rome.io.XmlReader y SyndFeedInput. Aquí body es el InputStream recibido y contentType es el Content-Type HTTP. XmlReader tiene en cuenta el BOM, esos metadatos y la declaración XML. Decodificar primero con un charset arbitrario puede descartar pruebas útiles.

Inspecciona el estado HTTP antes de analizar. De lo contrario, una página de inicio de sesión del proxy o una denegación pueden aparecer como un error XML. Libera también los cuerpos de las respuestas rechazadas, para que un error HTTP no deje su flujo abierto.

Dos fuentes de feed pueden usar clientes configurados de forma distinta sin mutar las propiedades de proxy de la JVM entre llamadas. Cada cliente HTTP posee su ruta mientras ROME posee el paso de análisis.

Artículos relacionados