ROME Feeds: שימו את הפרוקסי על לקוח ה-HTTP
הניחו ללקוח ה-HTTP להחזיק בניתוב הפרוקסי ובטיפול בסטטוס, ואז העבירו את הזרם וסוג התוכן שלו לקורא ה-XML של ROME.
ROME מנתח את בתי הפיד; מסלול הפרוקסי והחשבון צריכים להיות של לקוח ה-HTTP. עבור JDK HttpClient נבחר, פרוקסי קבוע שייך ל-builder שלו:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
לבדיקת פיד ציבורי מותרת ללא אימות פרוקסי, החליפו את המארח והפורט הממלאי מקום במועמד מתוך רשימת פרוקסי ה-HTTP. הוסיפו ללקוח הזה את אימות הפריסה ואת מגבלות הבקשות. לאחר שיקבל תגובה מקובלת, מסרו את הזרם ל-ROME:
try (XmlReader reader = new XmlReader(body, contentType)) {
SyndFeed feed = new SyndFeedInput().build(reader);
}
הייבוא המודרני הוא com.rometools.rome.io.XmlReader ו-SyndFeedInput. כאן body הוא ה-InputStream שהתקבל ו-contentType הוא ה-HTTP Content-Type. XmlReader מתחשב ב-BOM, במטא-נתונים האלה ובהצהרת ה-XML. פענוח תחילה עם charset שרירותי עלול להשליך ראיות שימושיות.
בדקו את סטטוס ה-HTTP לפני הניתוח. אחרת דף התחברות של הפרוקסי או דחייה עלולים להיראות כשגיאת XML. שחררו גופים גם בתגובות שנדחו, כדי ששגיאת HTTP לא תשאיר את הזרם פתוח.
שני מקורות פיד יכולים להשתמש בלקוחות מוגדרים בצורה שונה מבלי לשנות את מאפייני הפרוקסי של ה-JVM בין קריאות. כל לקוח HTTP מחזיק במסלול שלו ואילו ROME מחזיק בשלב הניתוח.