ROME Feeds: ilagay ang proxy sa HTTP client
Hayaang hawakan ng HTTP client ang pagruruta ng proxy at paghawak ng status, pagkatapos ay ipasa ang stream at uri ng nilalaman nito sa XML reader ng ROME.
Binabasa ng ROME ang mga byte ng feed; ang ruta ng proxy at account ay dapat pag-aari ng HTTP client. Para sa piniling JDK HttpClient, ang nakapirming proxy ay nasa builder nito:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Para sa pinahihintulutang pagsubok ng pampublikong feed na walang proxy authentication, palitan ang placeholder host at port ng kandidato mula sa listahan ng HTTP proxy. Idagdag ang authentication ng deployment at ang mga limitasyon ng kahilingan sa client na iyon. Kapag nakakuha na ito ng katanggap-tanggap na tugon, ibigay ang stream sa ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Ang mga modernong import ay com.rometools.rome.io.XmlReader at SyndFeedInput. Dito, ang body ay ang natanggap na InputStream at ang contentType ay ang HTTP Content-Type. Isinasaalang-alang ng XmlReader ang BOM, ang metadata na iyon at ang deklarasyon ng XML. Ang pag-decode muna gamit ang arbitrary na charset ay maaaring magtapon ng kapaki-pakinabang na ebidensya.
Suriin ang status ng HTTP bago mag-parse. Kung hindi, ang pahina ng pag-login ng proxy o pagtanggi ay maaaring lumitaw bilang error sa XML. Palayain din ang mga body para sa mga tinanggihang tugon, upang ang error sa HTTP ay hindi mag-iwan ng bukas na stream.
Dalawang pinagmumulan ng feed ang maaaring gumamit ng magkaibang naka-configure na client nang hindi binabago ang mga property ng proxy ng JVM sa pagitan ng mga tawag. Ang bawat HTTP client ay nagmamay-ari ng sarili nitong ruta habang ang ROME ang nagmamay-ari ng hakbang ng pag-parse.