ROME Feeds: proksini HTTP mijozi ustiga qo'ying
HTTP mijozi proksi marshrutlash va holatni qayta ishlashni o'z zimmasiga olsin, so'ng uning oqimi va tarkib turini ROME XML o'quvchisiga bering.
ROME feed baytlarini tahlil qiladi; proksi marshruti va hisob HTTP mijoziga tegishli bo'lishi kerak. Tanlangan JDK HttpClient uchun qat'iy proksi uning builder'iga qo'yiladi:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
Proksi autentifikatsiyasisiz ruxsat etilgan ommaviy feed sinovi uchun to'ldiruvchi host va portni HTTP proksi ro'yxatidan nomzod bilan almashtiring. O'sha mijozga joylashtirish autentifikatsiyasini va so'rov cheklovlarini qo'shing. Maqbul javob olgach, oqimni ROMEga bering:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
Zamonaviy importlar — com.rometools.rome.io.XmlReader va SyndFeedInput. Bu yerda body olingan InputStream, contentType esa HTTP Content-Type. XmlReader BOM, o'sha metadata va XML deklaratsiyasini hisobga oladi. Avval ixtiyoriy charset bilan dekodlash foydali dalillarni yo'qotishi mumkin.
Tahlildan oldin HTTP holatini tekshiring. Aks holda proksiga kirish sahifasi yoki rad etish XML xatosi bo'lib ko'rinishi mumkin. Rad etilgan javoblarning tanasini ham bo'shating, HTTP xatosi oqimini ochiq qoldirmasligi uchun.
Ikki feed manbasi chaqiruvlar orasida JVM proksi xossalarini o'zgartirmasdan turli sozlangan mijozlardan foydalanishi mumkin. Har bir HTTP mijoz o'z marshrutiga ega, ROME esa tahlil bosqichiga ega.