ROME Feeds: puneți proxy-ul pe clientul HTTP
Lăsați clientul HTTP să gestioneze rutarea prin proxy și tratarea stării, apoi pasați fluxul și tipul de conținut cititorului XML al ROME.
ROME analizează octeții fluxului; ruta proxy și contul ar trebui să aparțină clientului HTTP. Pentru un JDK HttpClient ales, un proxy fix se pune pe builder-ul acestuia:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Pentru un test permis al unui flux public fără autentificare proxy, înlocuiți gazda și portul substituent cu un candidat din lista de proxy-uri HTTP. Adăugați autentificarea implementării și limitele cererilor la acel client. După ce obține un răspuns acceptabil, predați fluxul către ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Importurile moderne sunt com.rometools.rome.io.XmlReader și SyndFeedInput. Aici body este InputStream-ul primit, iar contentType este HTTP Content-Type. XmlReader ia în considerare BOM-ul, acele metadate și declarația XML. Decodarea mai întâi cu un charset arbitrar poate elimina dovezi utile.
Inspectați starea HTTP înainte de analiză. Altfel, o pagină de autentificare proxy sau un refuz pot apărea ca eroare XML. Eliberați și corpurile răspunsurilor respinse, ca o eroare HTTP să nu lase fluxul deschis.
Două surse de flux pot folosi clienți configurați diferit fără a modifica proprietățile proxy ale JVM între apeluri. Fiecare client HTTP își deține ruta, în timp ce ROME deține pasul de analiză.