Дайте на стартирания от Java процес curl неговите прокси променливи
Задайте ProcessBuilder.environment за изтеглящия; прокси свойствата -D на JVM не стават опции на curl.
Задайте входните данни на изтеглящия в неговия 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().
Системното свойство http.proxyHost на Java принадлежи на участващия Java мрежов код. Curl използва свои собствени опции и среда. Ако дъщерният процес е друга Java програма, подайте нужните му аргументи -D преди главния клас или -jar; променлива на средата, която просто се нарича http.proxyHost, не задава това свойство.