ROME parst die Feed-Bytes; die Proxy-Route und das Konto gehören zum HTTP-Client. Bei einem gewählten JDK HttpClient gehört ein fester Proxy auf dessen Builder:

HttpClient client = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("proxy.example", 8080)))
    .build();

Für einen erlaubten Test öffentlicher Feeds ohne Proxy-Authentifizierung ersetzen Sie Platzhalter-Host und -Port durch einen Kandidaten aus der HTTP-Proxy-Liste. Fügen Sie dem Client die Authentifizierung der Bereitstellung und Anfragegrenzen hinzu. Nachdem er eine akzeptable Antwort erhalten hat, übergeben Sie den Stream an ROME:

try (XmlReader reader = new XmlReader(body, contentType)) {
    SyndFeed feed = new SyndFeedInput().build(reader);
}

Die modernen Imports sind com.rometools.rome.io.XmlReader und SyndFeedInput. Hier ist body der empfangene InputStream und contentType der HTTP Content-Type. XmlReader berücksichtigt die BOM, diese Metadaten und die XML-Deklaration. Wer zuerst mit einem beliebigen Charset dekodiert, kann nützliche Hinweise verwerfen.

Prüfen Sie den HTTP-Status vor dem Parsen. Sonst kann eine Proxy-Anmeldeseite oder eine Ablehnung als XML-Fehler erscheinen. Geben Sie auch bei abgelehnten Antworten den Body frei, damit ein HTTP-Fehler den Stream nicht offen lässt.

Zwei Feed-Quellen können unterschiedlich konfigurierte Clients nutzen, ohne zwischen Aufrufen JVM-Proxy-Eigenschaften zu verändern. Jeder HTTP-Client besitzt seine Route, während ROME den Parsing-Schritt besitzt.

Ähnliche Artikel