В HtmlUnit в классе WebClient метод loadWebResponseFromWebConnection сделан private. Метод вызывает сам себя рекурсивно в случае редиректа. Есть ТЗ - сохранить всю последовательность редиректов, т.е. URL1 (HTTP code1 - redirect) -> URL2 (HTTP code2 - redirect) -> URL3 (HTTP code3 - 200 OK). Не нашёл как это можно другим способом без модификации библиотечного файла кроме как override loadWebResponseFromWebConnection что невозможно т.к. он private. Если бы он был protected можно было бы сделать так:
class MyWebClient extends WebClient {
private List<URL> urls;
public MyWebClient(List<URL> urls) {
super();
this.urls = urls;
}
protected WebResponse loadWebResponseFromWebConnection(final WebRequest webRequest, final int allowedRedirects) throws IOException {
this.urls.add(webRequest.getUrl());
super.this.loadWebRewsponseFromWebConnection(webRequest, allowedRedirects);
}
}
Теперь же придётся отключить автоматический редирект и продублировать код по обработке редиректов из loadWebResponseFromWebConnection. Вывод: метод не надо было делать private.