ROME Feeds: ievietojiet starpniekserveri HTTP klientā
Ļaujiet HTTP klientam pārvaldīt starpniekservera maršrutēšanu un statusa apstrādi, pēc tam nododiet tā straumi un satura tipu ROME XML lasītājam.
ROME parsē plūsmas baitus; starpniekservera maršruts un konts pieder HTTP klientam. Atlasītajam JDK HttpClient fiksēts starpniekserveris tiek pievienots tā builder'im:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Atļautam publiskas plūsmas testam bez starpniekservera autentifikācijas aizstājiet viettura resursdatoru un portu ar kandidātu no HTTP starpniekserveru saraksta. Pievienojiet šim klientam izvietošanas autentifikāciju un pieprasījumu ierobežojumus. Kad tas saņem pieņemamu atbildi, nododiet straumi ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Mūsdienu importi ir com.rometools.rome.io.XmlReader un SyndFeedInput. Šeit body ir saņemtais InputStream, bet contentType ir HTTP Content-Type. XmlReader ņem vērā BOM, šos metadatus un XML deklarāciju. Dekodēšana vispirms ar patvaļīgu charset var izmest noderīgus pierādījumus.
Pirms parsēšanas pārbaudiet HTTP statusu. Pretējā gadījumā starpniekservera pieteikšanās lapa vai atteikums var parādīties kā XML kļūda. Atbrīvojiet pamattekstus arī noraidītām atbildēm, lai HTTP kļūda neatstātu savu straumi atvērtu.
Divi plūsmas avoti var izmantot atšķirīgi konfigurētus klientus, nemainot JVM starpniekservera rekvizītus starp izsaukumiem. Katrs HTTP klients pārvalda savu maršrutu, bet ROME — parsēšanas soli.