ROME Feeds: poseu el proxy al client HTTP
Deixeu que el client HTTP s'encarregui de l'encaminament del proxy i de la gestió d'estat, i després passeu el seu flux i tipus de contingut al lector XML de ROME.
ROME analitza els bytes del feed; la ruta del proxy i el compte han de ser del client HTTP. Per a un JDK HttpClient triat, un proxy fix va al seu builder:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Per a una prova de feed públic permesa sense autenticació de proxy, substituïu l'amfitrió i el port d'exemple per un candidat de la llista de proxys HTTP. Afegiu l'autenticació del desplegament i els límits de peticions a aquest client. Quan obtingui una resposta acceptable, passeu el flux a ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Els imports moderns són com.rometools.rome.io.XmlReader i SyndFeedInput. Aquí body és l'InputStream rebut i contentType és el Content-Type HTTP. XmlReader té en compte el BOM, aquestes metadades i la declaració XML. Descodificar primer amb un charset arbitrari pot descartar proves útils.
Inspeccioneu l'estat HTTP abans d'analitzar. Altrament, una pàgina d'inici de sessió del proxy o una denegació poden aparèixer com un error XML. Allibereu també els cossos de les respostes rebutjades, perquè un error HTTP no deixi el flux obert.
Dues fonts de feed poden usar clients configurats de manera diferent sense mutar les propietats de proxy de la JVM entre crides. Cada client HTTP posseeix la seva ruta mentre ROME posseeix el pas d'anàlisi.