ROME Feeds: dejte proxy na HTTP klienta
Nechte HTTP klienta spravovat proxy směrování a zpracování stavu a pak předejte jeho stream a typ obsahu XML čtečce ROME.
ROME parsuje bajty kanálu; proxy trasa a účet mají patřit HTTP klientovi. U zvoleného JDK HttpClient patří pevné proxy na jeho builder:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Pro povolený test veřejného kanálu bez autentizace proxy nahraďte zástupný hostitel a port kandidátem ze seznamu HTTP proxy. Přidejte do toho klienta autentizaci nasazení a limity požadavků. Když získá přijatelnou odpověď, předejte stream ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Moderní importy jsou com.rometools.rome.io.XmlReader a SyndFeedInput. Zde body je přijatý InputStream a contentType je HTTP Content-Type. XmlReader zohledňuje BOM, tato metadata i deklaraci XML. Dekódování nejprve libovolným charsetem může zahodit užitečné důkazy.
Před parsováním zkontrolujte stav HTTP. Jinak se přihlašovací stránka proxy nebo odmítnutí mohou jevit jako chyba XML. Uvolněte těla i u odmítnutých odpovědí, aby chyba HTTP nenechala stream otevřený.
Dva zdroje kanálu mohou používat různě nakonfigurované klienty, aniž by mezi voláními měnily vlastnosti proxy JVM. Každý HTTP klient vlastní svou trasu, zatímco ROME vlastní krok parsování.