ROME Feeds : placez le proxy sur le client HTTP
Laissez le client HTTP gérer le routage du proxy et le traitement des statuts, puis transmettez son flux et son type de contenu au lecteur XML de ROME.
ROME analyse les octets du flux ; le client HTTP doit posséder la route proxy et le compte. Pour un JDK HttpClient choisi, un proxy fixe se place sur son builder :
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Pour un test autorisé de flux public sans authentification proxy, remplacez l'hôte et le port fictifs par un candidat de la liste de proxys HTTP. Ajoutez l'authentification du déploiement et les limites de requêtes à ce client. Une fois qu'il obtient une réponse acceptable, remettez le flux à ROME :
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Les imports modernes sont com.rometools.rome.io.XmlReader et SyndFeedInput. Ici, body est le flux InputStream reçu et contentType le Content-Type HTTP. XmlReader tient compte du BOM, de ces métadonnées et de la déclaration XML. Décoder d'abord avec un jeu de caractères arbitraire peut écarter des indices utiles.
Vérifiez le statut HTTP avant d'analyser. Sinon, une page de connexion proxy ou un refus peuvent apparaître comme une erreur XML. Libérez aussi les corps des réponses rejetées, afin qu'une erreur HTTP ne laisse pas son flux ouvert.
Deux sources de flux peuvent utiliser des clients configurés différemment sans modifier les propriétés proxy de la JVM entre les appels. Chaque client HTTP possède sa route, tandis que ROME possède l'étape d'analyse.