ROME Feeds: laita välityspalvelin HTTP-asiakkaaseen
Anna HTTP-asiakkaan hoitaa välityspalvelinreititys ja tilankäsittely ja välitä sitten sen virta ja sisältötyyppi ROMEn XML-lukijalle.
ROME jäsentää syötteen tavut; välityspalvelimen reitti ja tili kuuluvat HTTP-asiakkaalle. Valitulle JDK HttpClientille kiinteä välityspalvelin kuuluu sen builderiin:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Sallittua julkisen syötteen testiä varten ilman välityspalvelimen todennusta korvaa paikkamerkki-isäntä ja -portti ehdokkaalla HTTP-välityspalvelinluettelosta. Lisää kyseiselle asiakkaalle käyttöönoton todennus ja pyyntörajoitukset. Kun se on saanut hyväksyttävän vastauksen, anna virta ROMElle:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Nykyaikaiset importit ovat com.rometools.rome.io.XmlReader ja SyndFeedInput. Tässä body on vastaanotettu InputStream ja contentType on HTTP Content-Type. XmlReader ottaa huomioon BOMin, kyseiset metatiedot ja XML-määrittelyn. Mielivaltaisella merkistöllä ensin dekoodaaminen voi hukata hyödyllistä todistusaineistoa.
Tarkista HTTP-tila ennen jäsentämistä. Muuten välityspalvelimen kirjautumissivu tai hylkäys voi näyttää XML-virheeltä. Vapauta runko myös hylätyille vastauksille, jotta HTTP-virhe ei jätä virtaa auki.
Kaksi syötelähdettä voi käyttää eri tavoin määritettyjä asiakkaita muuttamatta JVM:n välityspalvelinasetuksia kutsujen välillä. Kukin HTTP-asiakas omistaa reittinsä, kun taas ROME omistaa jäsennysvaiheen.