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.

Relaterede artikler