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 — этапом разбора.

Похожие статьи