ROME Feeds: læg proxyen på HTTP-klienten
Lad HTTP-klienten eje proxy-routing og statusbehandling, og giv derefter dens stream og indholdstype videre til ROME's XML-læser.
ROME parser feed-bytes; proxy-ruten og kontoen bør ejes af HTTP-klienten. For en valgt JDK HttpClient hører en fast proxy på dens builder:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Til en tilladt offentlig feed-test uden proxy-godkendelse skal du erstatte pladsholder-værten og -porten med en kandidat fra HTTP-proxylisten. Tilføj udrulningens godkendelse og anmodningsgrænser til den klient. Når den har fået et acceptabelt svar, giv streamen til ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
De moderne imports er com.rometools.rome.io.XmlReader og SyndFeedInput. Her er body den modtagne InputStream, og contentType er HTTP Content-Type. XmlReader tager højde for BOM, de metadata og XML-deklarationen. Afkodning med et vilkårligt charset først kan kassere nyttige beviser.
Undersøg HTTP-status før parsing. Ellers kan en proxy-login-side eller afvisning fremstå som en XML-fejl. Frigiv også bodies for afviste svar, så en HTTP-fejl ikke efterlader streamen åben.
To feed-kilder kan bruge forskelligt konfigurerede klienter uden at mutere JVM-proxyegenskaber mellem kald. Hver HTTP-klient ejer sin rute, mens ROME ejer parsningstrinnet.