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.

Kapcsolódó cikkek