ROME Feeds: stavite proxy na HTTP klijenta
Neka HTTP klijent preuzme proxy rutiranje i obradu statusa, a zatim proslijedite njegov stream i tip sadržaja ROME-ovom XML čitaču.
ROME parsira bajtove feeda; proxy ruta i račun treba da pripadaju HTTP klijentu. Za izabrani JDK HttpClient fiksni proxy ide na njegov builder:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Za dozvoljeni test javnog feeda bez proxy autentifikacije zamenite zamenski host i port kandidatom sa liste HTTP proxyja. Dodajte autentifikaciju implementacije i ograničenja zahteva tom klijentu. Nakon što dobije prihvatljiv odgovor, predajte stream ROME-u:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Moderni uvozi su com.rometools.rome.io.XmlReader i SyndFeedInput. Ovde je body primljeni InputStream, a contentType je HTTP Content-Type. XmlReader uzima u obzir BOM, te metapodatke i XML deklaraciju. Dekodiranje prvo proizvoljnim charsetom može odbaciti korisne dokaze.
Proverite HTTP status pre parsiranja. Inače se proxy stranica za prijavu ili odbijanje mogu pojaviti kao XML greška. Oslobodite tela i za odbijene odgovore, da HTTP greška ne ostavi stream otvorenim.
Dva izvora feeda mogu koristiti različito konfigurisane klijente bez menjanja JVM proxy svojstava između poziva. Svaki HTTP klijent poseduje svoju rutu, dok ROME poseduje korak parsiranja.