ROME Feeds: dajte proxy na HTTP klienta
Nechajte HTTP klienta spravovať proxy smerovanie a spracovanie stavu a potom odovzdajte jeho stream a typ obsahu XML čítačke ROME.
ROME parsuje bajty kanála; proxy trasa a účet by mali patriť HTTP klientovi. Pri zvolenom JDK HttpClient patrí pevné proxy na jeho builder:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Na povolený test verejného kanála bez autentifikácie proxy nahraďte zástupný hostiteľ a port kandidátom zo zoznamu HTTP proxy. Pridajte do toho klienta autentifikáciu nasadenia a limity požiadaviek. Keď získa prijateľnú odpoveď, odovzdajte stream ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Moderné importy sú com.rometools.rome.io.XmlReader a SyndFeedInput. Tu je body prijatý InputStream a contentType je HTTP Content-Type. XmlReader zohľadňuje BOM, tieto metadáta a deklaráciu XML. Dekódovanie najprv ľubovoľným charsetom môže zahodiť užitočné dôkazy.
Pred parsovaním skontrolujte stav HTTP. Inak sa prihlasovacia stránka proxy alebo odmietnutie môžu javiť ako chyba XML. Uvoľnite telá aj pri odmietnutých odpovediach, aby chyba HTTP nenechala stream otvorený.
Dva zdroje kanála môžu používať rôzne nakonfigurovaných klientov bez zmeny proxy vlastností JVM medzi volaniami. Každý HTTP klient vlastní svoju trasu, zatiaľ čo ROME vlastní krok parsovania.