Задайте входные данные загрузчика в его ProcessBuilder:

var command = new ProcessBuilder(
    "/usr/bin/curl", "--fail", "--max-time", "30",
    "https://downloads.example/data.csv");
var environment = command.environment();
environment.put("http_proxy", "http://proxy.example:8080");
environment.put("https_proxy", "http://proxy.example:8080");
command.inheritIO();
Process child = command.start();

Карта окружения начинается как копия окружения процесса Java. Эти изменения действуют на процессы, которые этот построитель запустит позже; они не обновляют родительский терминал или другой построитель. Проверьте унаследованные переменные обхода, если curl всё ещё идёт напрямую. Для публичного маршрута загрузки по HTTP выберите конечную точку дочернего процесса из списка HTTP-прокси.

Пример наследует стандартные потоки. Дождитесь дочернего процесса, обработайте его код возврата и сохраните политику отмены приложения после start().

Системное свойство Java http.proxyHost относится к участвующему сетевому коду Java. Curl использует собственные опции и окружение. Если дочерний процесс — другая программа Java, передайте ей нужные аргументы -D перед главным классом или -jar; переменная окружения с именем http.proxyHost не задаёт это свойство.

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