Setzen Sie die Eingaben des Downloaders in seinem 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();

Die Umgebungsmap beginnt als Kopie der Umgebung des Java-Prozesses. Diese Änderungen gelten für später von diesem Builder gestartete Prozesse; sie aktualisieren weder das übergeordnete Terminal noch einen anderen Builder. Prüfen Sie vererbte Bypass-Variablen, wenn curl weiterhin direkt geht. Wählen Sie für eine öffentliche HTTP-Downloadroute den Endpunkt des Kindprozesses aus der HTTP-Proxy-Liste.

Das Beispiel erbt die Standardströme. Warten Sie auf das Kind, behandeln Sie dessen Exit-Status und behalten Sie die Abbruchrichtlinie der Anwendung nach start() bei.

Die Java-Systemeigenschaft http.proxyHost gehört zum teilnehmenden Java-Netzwerkcode. Curl verwendet eigene Optionen und eigene Umgebung. Ist das Kind ein anderes Java-Programm, übergeben Sie ihm die nötigen -D-Argumente vor der Hauptklasse oder -jar; eine Umgebungsvariable, die nur http.proxyHost heißt, setzt diese Eigenschaft nicht.

Ähnliche Artikel