به فرآیند curl که توسط Java اجرا شده متغیرهای پروکسی آن را بدهید
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 نام دارد آن ویژگی را تنظیم نمیکند.