ROME Feeds: პროქსი HTTP კლიენტზე დააყენეთ
მიეცით HTTP კლიენტს პროქსის მარშრუტიზაციისა და სტატუსის დამუშავების პასუხისმგებლობა, შემდეგ კი მისი ნაკადი და შიგთავსის ტიპი ROME-ის XML წამკითხველს გადაეცით.
ROME აანალიზებს feed-ის ბაიტებს; პროქსის მარშრუტი და ანგარიში HTTP კლიენტს უნდა ეკუთვნოდეს. არჩეული JDK HttpClient-ისთვის ფიქსირებული პროქსი მის builder-ზე მოთავსდება:
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(
new InetSocketAddress("proxy.example", 8080)))
.build();
პროქსის ავთენტიფიკაციის გარეშე დაშვებული საჯარო feed-ის ტესტისთვის შეცვალეთ ჩამანაცვლებელი ჰოსტი და პორტი კანდიდატით 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 შეცდომად გამოჩნდეს. გაათავისუფლეთ სხეულები უარყოფილი პასუხებისთვისაც, რომ HTTP შეცდომამ ნაკადი ღიად არ დატოვოს.
ორი feed წყარო შეიძლება იყენებდეს განსხვავებულად კონფიგურირებულ კლიენტებს გამოძახებებს შორის JVM პროქსის თვისებების შეცვლის გარეშე. თითოეული HTTP კლიენტი ფლობს თავის მარშრუტს, ხოლო ROME — ანალიზის საფეხურს.