ROME Feeds: legg proxyen på HTTP-klienten
La HTTP-klienten eie proxy-rutingen og statusbehandlingen, og send deretter strømmen og innholdstypen videre til ROMEs XML-leser.
ROME parser feed-bytene; proxy-ruten og kontoen bør eies av HTTP-klienten. For en valgt JDK HttpClient hører en fast proxy til på builderen:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
For en tillatt test av offentlig feed uten proxy-autentisering, erstatt plassholderverten og -porten med en kandidat fra HTTP-proxylisten. Legg til distribusjonens autentisering og forespørselsgrensene på den klienten. Når den har fått et akseptabelt svar, gi strømmen til ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
De moderne importene er com.rometools.rome.io.XmlReader og SyndFeedInput. Her er body den mottatte InputStream, og contentType er HTTP Content-Type. XmlReader tar hensyn til BOM, disse metadataene og XML-deklarasjonen. Å dekode først med et vilkårlig charset kan kaste bort nyttige bevis.
Undersøk HTTP-statusen før parsing. Ellers kan en proxy-innloggingsside eller en avvisning fremstå som en XML-feil. Frigjør også brødtekster for avviste svar, slik at en HTTP-feil ikke lar strømmen stå åpen.
To feed-kilder kan bruke ulikt konfigurerte klienter uten å endre JVM-proxyegenskaper mellom kall. Hver HTTP-klient eier sin rute, mens ROME eier parseringstrinnet.