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 오류로 보일 수 있습니다. 거부된 응답의 본문도 해제해 HTTP 오류가 스트림을 열린 채로 두지 않게 하세요.

두 피드 소스가 호출 사이에 JVM 프록시 속성을 바꾸지 않고 서로 다르게 구성된 클라이언트를 사용할 수 있습니다. 각 HTTP 클라이언트가 경로를 소유하고 ROME이 파싱 단계를 소유합니다.

관련 글