ROME Feeds: zet de proxy op de HTTP-client
Laat de HTTP-client de proxy-routering en statusafhandeling bezitten en geef vervolgens zijn stream en inhoudstype door aan ROME's XML-lezer.
ROME parseert de feedbytes; de proxy-route en het account horen bij de HTTP-client. Voor een gekozen JDK HttpClient hoort een vaste proxy op zijn builder:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Voor een toegestane test van een openbare feed zonder proxy-authenticatie vervangt u de tijdelijke host en poort door een kandidaat uit de HTTP-proxylijst. Voeg de authenticatie van de deployment en de verzoeklimieten aan die client toe. Nadat hij een aanvaardbaar antwoord heeft gekregen, geeft u de stream aan ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
De moderne imports zijn com.rometools.rome.io.XmlReader en SyndFeedInput. Hier is body de ontvangen InputStream en contentType is de HTTP Content-Type. XmlReader houdt rekening met de BOM, die metadata en de XML-declaratie. Eerst decoderen met een willekeurige charset kan nuttig bewijs weggooien.
Controleer de HTTP-status vóór het parsen. Anders kan een proxyloginpagina of een weigering als XML-fout verschijnen. Geef ook bodies vrij voor geweigerde antwoorden, zodat een HTTP-fout zijn stream niet open laat.
Twee feedbronnen kunnen verschillend geconfigureerde clients gebruiken zonder JVM-proxyeigenschappen tussen aanroepen te wijzigen. Elke HTTP-client bezit zijn route, terwijl ROME de parseerstap bezit.