ROME Feeds: প্রক্সি HTTP ক্লায়েন্টে রাখুন
HTTP ক্লায়েন্টকে প্রক্সি রাউটিং ও স্ট্যাটাস পরিচালনার দায়িত্ব দিন, তারপর এর স্ট্রিম ও কনটেন্ট টাইপ ROME-এর XML রিডারে দিন।
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);
}
আধুনিক import হলো com.rometools.rome.io.XmlReader এবং SyndFeedInput। এখানে body হলো প্রাপ্ত InputStream এবং contentType হলো HTTP Content-Type। XmlReader BOM, সেই মেটাডেটা ও XML ঘোষণা বিবেচনা করে। প্রথমে যেকোনো charset দিয়ে ডিকোড করলে উপকারী প্রমাণ হারাতে পারে।
বিশ্লেষণের আগে HTTP স্ট্যাটাস পরীক্ষা করুন। নইলে প্রক্সি লগইন পৃষ্ঠা বা প্রত্যাখ্যান XML ত্রুটি হিসেবে দেখা দিতে পারে। প্রত্যাখ্যাত সাড়ার জন্যও body মুক্ত করুন, যাতে HTTP ত্রুটি স্ট্রিম খোলা না রাখে।
দুটি ফিড উৎস JVM প্রক্সি প্রপার্টি না বদলে ভিন্নভাবে কনফিগার করা ক্লায়েন্ট ব্যবহার করতে পারে। প্রতিটি HTTP ক্লায়েন্ট তার রুটের মালিক, আর ROME বিশ্লেষণের ধাপের মালিক।