ROME Feeds: tegye a proxyt a HTTP-kliensre
Hagyja, hogy a HTTP-kliens kezelje a proxy-útválasztást és az állapotkezelést, majd adja át a streamet és a tartalomtípust a ROME XML-olvasójának.
A ROME elemzi a feed bájtjait; a proxy-útvonal és a fiók a HTTP-klienshez tartozzon. Egy kiválasztott JDK HttpClient esetén a rögzített proxy a builderére kerül:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Egy engedélyezett nyilvános feed-teszthez proxy-hitelesítés nélkül cserélje ki a helyőrző gazdagépet és portot a HTTP-proxylista egyik jelöltjére. Adja hozzá az üzembe helyezés hitelesítését és a kéréskorlátokat ehhez a klienshez. Miután elfogadható választ kapott, adja át a streamet a ROME-nak:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
A modern importok: com.rometools.rome.io.XmlReader és SyndFeedInput. Itt body a fogadott InputStream, contentType pedig a HTTP Content-Type. Az XmlReader figyelembe veszi a BOM-ot, ezeket a metaadatokat és az XML-deklarációt. Ha először tetszőleges charsettel dekódol, hasznos bizonyítékot veszíthet.
Az elemzés előtt vizsgálja meg a HTTP-állapotot. Ellenkező esetben egy proxy-bejelentkező oldal vagy elutasítás XML-hibaként jelenhet meg. A visszautasított válaszok testét is engedje el, hogy egy HTTP-hiba ne hagyja nyitva a streamet.
Két feed-forrás eltérően konfigurált klienseket használhat anélkül, hogy a hívások között módosítaná a JVM proxy-tulajdonságait. Minden HTTP-kliens a saját útvonalát birtokolja, míg a ROME az elemzési lépést.