ROME phân tích các byte của feed; tuyến proxy và tài khoản nên thuộc về HTTP client. Với một JDK HttpClient đã chọn, proxy cố định nằm trên builder của nó:

HttpClient client = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("proxy.example", 8080)))
    .build();

Để thử nghiệm feed công khai được phép mà không cần xác thực proxy, hãy thay host và cổng giữ chỗ bằng một ứng viên từ danh sách proxy HTTP. Thêm xác thực của triển khai và giới hạn yêu cầu vào client đó. Sau khi nhận được phản hồi chấp nhận được, hãy chuyển luồng cho ROME:

try (XmlReader reader = new XmlReader(body, contentType)) {
    SyndFeed feed = new SyndFeedInput().build(reader);
}

Các import hiện đại là com.rometools.rome.io.XmlReader và SyndFeedInput. Ở đây body là InputStream nhận được và contentType là HTTP Content-Type. XmlReader xem xét BOM, siêu dữ liệu đó và khai báo XML. Giải mã trước bằng một charset tùy ý có thể loại bỏ bằng chứng hữu ích.

Kiểm tra trạng thái HTTP trước khi phân tích. Nếu không, trang đăng nhập proxy hoặc sự từ chối có thể hiện ra như lỗi XML. Cũng giải phóng body cho các phản hồi bị từ chối, để lỗi HTTP không để luồng của nó mở.

Hai nguồn feed có thể dùng các client được cấu hình khác nhau mà không thay đổi thuộc tính proxy của JVM giữa các lần gọi. Mỗi HTTP client sở hữu tuyến của nó trong khi ROME sở hữu bước phân tích.

Bài viết liên quan