Как объясняет руководство , вы должны выбрать правильный прокси для вашего запроса. Я обновил измененный пример кода для этого с помощью Java Streams:
URI uri = new URI("https://www.whatever.com");
Proxy proxy = Optional.ofNullable(ProxySelector.getDefault())
.map(ps -> ps.select(uri))
.stream().flatMap(List::stream)
.max(Comparator.comparing(Proxy::type))
.orElse(Proxy.NO_PROXY);
В этом примере используются прокси со следующим приоритетом: SOCKS
, HTTP
, DIRECT
. Вы можете легко изменить это, обернув его в отдельный метод:
private static int getPriority(Proxy.Type type) {
switch (type) {
case HTTP:
return 2;
case SOCKS:
return 1;
}
return 0;
}
Используйте это с Comparator.comparingInt(p -> getPriority(p.type()))
в .max()
. В качестве альтернативы вы можете использовать официальный пример кода, который я связал выше.
Теперь вы можете использовать это proxy
в своем соединении Jsoup:
Document doc = Jsoup.connect(uri.toString())
.proxy(proxy)
.get();
Кроме того, вы должны убедиться, что ваше соединение работает через прокси. Если ваш прокси-сервер требует аутентификации, следуйте этой части данного руководства. Для устранения неполадок вы можете использовать Proxy Vole Tester .