Java から起動した curl プロセスにプロキシ変数を渡す
ダウンローダーに ProcessBuilder.environment を設定する。JVM の -D プロキシ設定は 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() の後もアプリケーションのキャンセル方針を維持します。
Java の http.proxyHost システムプロパティは、関与する Java のネットワークコードに属します。curl は独自のオプションと環境を使います。子が別の Java プログラムなら、必要な -D 引数を メインクラスの前 または -jar に渡してください。単に http.proxyHost という名前の環境変数はそのプロパティを設定しません。