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인 환경 변수는 그 속성을 설정하지 않습니다.