ROME Feeds: metu la prokurilon sur la HTTP-klienton
Lasu la HTTP-klienton posedu la prokurilan enkursigon kaj la statusan traktadon, poste transdonu ĝian fluon kaj enhavtipon al la XML-legilo de ROME.
ROME analizas la bajtojn de la fluo; la prokurila vojo kaj konto apartenu al la HTTP-kliento. Por elektita JDK HttpClient, fiksa prokurilo apartenas al ĝia konstruilo:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Por permesita testo de publika fluo sen prokurila aŭtentikigo, anstataŭigu la anstataŭan gastiganton kaj pordon per kandidato el la listo de HTTP-prokuriloj. Aldonu la aŭtentikigon de la deplojo kaj la limojn de petoj al tiu kliento. Post kiam ĝi ricevas akcepteblan respondon, transdonu la fluon al ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
La modernaj importoj estas com.rometools.rome.io.XmlReader kaj SyndFeedInput. Ĉi tie body estas la ricevita InputStream kaj contentType estas la HTTP Content-Type. XmlReader konsideras la BOM, tiujn metadatenojn kaj la XML-deklaracion. Malĉifri unue per arbitra signaro povas forĵeti utilajn pruvojn.
Kontrolu la HTTP-statuson antaŭ analizi. Alie prokurila ensaluta paĝo aŭ rifuzo povas aperi kiel XML-eraro. Liberigu la korpojn ankaŭ por rifuzitaj respondoj, por ke HTTP-eraro ne lasu sian fluon malfermita.
Du fluaj fontoj povas uzi malsame agorditajn klientojn sen ŝanĝi la prokurilajn ecojn de la JVM inter vokoj. Ĉiu HTTP-kliento posedas sian vojon, dum ROME posedas la analizan paŝon.