ROME analiza os bytes do feed; a ruta do proxy e a conta deben ser do cliente HTTP. Para un JDK HttpClient escollido, un proxy fixo vai no seu builder:

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

Para unha proba de feed público permitida sen autenticación de proxy, substitúe o host e o port de exemplo por un candidato da lista de proxies HTTP. Engade a autenticación do despregamento e os límites de peticións a ese cliente. Cando obteña unha resposta aceptable, entrega o fluxo a ROME:

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

Os imports modernos son com.rometools.rome.io.XmlReader e SyndFeedInput. Aquí body é o InputStream recibido e contentType é o Content-Type HTTP. XmlReader ten en conta o BOM, eses metadatos e a declaración XML. Descodificar primeiro cun charset arbitrario pode descartar probas útiles.

Inspecciona o estado HTTP antes de analizar. Se non, unha páxina de inicio de sesión do proxy ou unha denegación poden aparecer como un erro XML. Libera tamén os corpos das respostas rexeitadas, para que un erro HTTP non deixe o seu fluxo aberto.

Dúas fontes de feed poden usar clientes configurados de forma distinta sen mutar as propiedades de proxy da JVM entre chamadas. Cada cliente HTTP posúe a súa ruta mentres ROME posúe o paso de análise.

Artigos relacionados