Το ROME αναλύει τα bytes της ροής· η διαδρομή proxy και ο λογαριασμός πρέπει να ανήκουν στον HTTP client. Για έναν επιλεγμένο JDK HttpClient, ένα σταθερό proxy ανήκει στον builder του:

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

Για μια επιτρεπόμενη δοκιμή δημόσιας ροής χωρίς έλεγχο ταυτότητας proxy, αντικαταστήστε τον κεντρικό υπολογιστή και τη θύρα θέσης με έναν υποψήφιο από τη λίστα proxy HTTP. Προσθέστε τον έλεγχο ταυτότητας της ανάπτυξης και τα όρια αιτημάτων σε αυτόν τον client. Αφού λάβει αποδεκτή απόκριση, παραδώστε το stream στο ROME:

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

Τα σύγχρονα imports είναι τα com.rometools.rome.io.XmlReader και SyndFeedInput. Εδώ το body είναι το InputStream που λήφθηκε και το contentType είναι το HTTP Content-Type. Το XmlReader λαμβάνει υπόψη το BOM, αυτά τα μεταδεδομένα και τη δήλωση XML. Η αποκωδικοποίηση πρώτα με αυθαίρετο charset μπορεί να πετάξει χρήσιμα στοιχεία.

Ελέγξτε την κατάσταση HTTP πριν από την ανάλυση. Αλλιώς μια σελίδα σύνδεσης proxy ή μια άρνηση μπορεί να εμφανιστεί ως σφάλμα XML. Απελευθερώστε τα σώματα και για τις απορριφθείσες αποκρίσεις, ώστε ένα σφάλμα HTTP να μην αφήνει το stream ανοιχτό.

Δύο πηγές ροής μπορούν να χρησιμοποιούν διαφορετικά διαμορφωμένους clients χωρίς να αλλάζουν τις ιδιότητες proxy της JVM μεταξύ κλήσεων. Κάθε HTTP client κατέχει τη διαδρομή του, ενώ το ROME κατέχει το βήμα ανάλυσης.

Σχετικά άρθρα