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);
}
importهای مدرن com.rometools.rome.io.XmlReader و SyndFeedInput هستند. اینجا body همان InputStream دریافتشده و contentType نوع محتوای HTTP است. XmlReader به BOM، آن فراداده و اعلان XML توجه میکند. رمزگشایی ابتدا با charset دلبخواه میتواند شواهد مفیدی را دور بریزد.
پیش از تجزیه، وضعیت HTTP را بررسی کنید. در غیر این صورت صفحه ورود پروکسی یا رد دسترسی ممکن است بهصورت خطای XML ظاهر شود. بدنهها را برای پاسخهای ردشده هم آزاد کنید تا خطای HTTP جریانش را باز نگذارد.
دو منبع فید میتوانند از کلاینتهای متفاوتپیکربندی استفاده کنند بدون اینکه ویژگیهای پروکسی JVM بین فراخوانیها تغییر کند. هر کلاینت HTTP مسیر خودش را دارد و ROME گام تجزیه را.