ROME Feeds: lägg proxy på HTTP-klienten
Låt HTTP-klienten äga proxy-routningen och statushanteringen och skicka sedan vidare dess ström och innehållstyp till ROMEs XML-läsare.
ROME tolkar flödets byte; proxy-rutten och kontot bör ägas av HTTP-klienten. För en vald JDK HttpClient hör en fast proxy till på dess builder:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
För ett tillåtet test av offentligt flöde utan proxy-autentisering, ersätt platshållarvärden och port med en kandidat från HTTP-proxylistan. Lägg till distributionens autentisering och begärandegränser på den klienten. När den har fått ett acceptabelt svar, lämna strömmen till ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
De moderna importerna är com.rometools.rome.io.XmlReader och SyndFeedInput. Här är body den mottagna InputStream och contentType är HTTP Content-Type. XmlReader tar hänsyn till BOM, dessa metadata och XML-deklarationen. Att först avkoda med en godtycklig charset kan kasta bort användbara bevis.
Kontrollera HTTP-statusen före tolkning. Annars kan en proxy-inloggningssida eller en avvisning visas som ett XML-fel. Frigör även bodies för avvisade svar, så att ett HTTP-fel inte lämnar strömmen öppen.
Två flödeskällor kan använda olika konfigurerade klienter utan att ändra JVM:ens proxyegenskaper mellan anrop. Varje HTTP-klient äger sin rutt medan ROME äger tolkningssteget.