ROME Feeds: stavite proxy na HTTP klijenta
Neka HTTP klijent preuzme proxy usmjeravanje i obradu statusa, a zatim proslijedite njegov stream i vrstu sadržaja ROME-ovu XML čitaču.
ROME raščlanjuje bajtove feeda; proxy ruta i račun trebaju pripadati HTTP klijentu. Za odabrani JDK HttpClient fiksni proxy ide na njegov builder:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Za dopušteni test javnog feeda bez proxy autentifikacije zamijenite zamjenski host i port kandidatom s popisa HTTP proxyja. Dodajte autentifikaciju implementacije i ograničenja zahtjeva 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. Ovdje je body primljeni InputStream, a contentType je HTTP Content-Type. XmlReader uzima u obzir BOM, te metapodatke i XML deklaraciju. Dekodiranje najprije proizvoljnim charsetom može odbaciti korisne dokaze.
Provjerite HTTP status prije raščlambe. Inače se proxy stranica za prijavu ili odbijanje mogu pojaviti kao XML pogreška. Oslobodite tijela i za odbijene odgovore, da HTTP pogreška ne ostavi stream otvorenim.
Dva izvora feeda mogu koristiti različito konfigurirane klijente bez mijenjanja JVM proxy svojstava između poziva. Svaki HTTP klijent posjeduje svoju rutu, dok ROME posjeduje korak raščlambe.