ROME Feeds: legg proxyen på HTTP-klienten
La HTTP-klienten eige proxy-rutinga og statushandsaminga, og send deretter straumen og innhaldstypen vidare til XML-lesaren til ROME.
ROME parsar feed-byta; proxy-ruta og kontoen bør eigast av HTTP-klienten. For ein vald JDK HttpClient høyrer ein fast proxy til på builderen:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
For ein tillaten test av offentleg feed utan proxy-autentisering, byt ut plasshaldarverten og -porten med ein kandidat frå HTTP-proxylista. Legg til autentiseringa til distribusjonen og førespurnadsgrensene på den klienten. Når han har fått eit akseptabelt svar, gje straumen til ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Dei moderne importa er com.rometools.rome.io.XmlReader og SyndFeedInput. Her er body den mottekne InputStream, og contentType er HTTP Content-Type. XmlReader tek omsyn til BOM, desse metadataa og XML-deklarasjonen. Å dekode først med eit vilkårleg charset kan kaste bort nyttige prov.
Undersøk HTTP-statusen før parsing. Elles kan ei proxy-innloggingsside eller ei avvising framstå som ein XML-feil. Frigjer også brødtekstar for avviste svar, slik at ein HTTP-feil ikkje lèt straumen stå open.
To feed-kjelder kan bruke ulikt konfigurerte klientar utan å endre JVM-proxyegenskapar mellom kall. Kvar HTTP-klient eig si rute, medan ROME eig parseringstrinnet.