ໃຫ້ຂະບວນການ curl ທີ່ Java ເລີ່ມຕົ້ນ ໄດ້ຮັບຕົວແປ proxy ຂອງມັນ
ຕັ້ງຄ່າ ProcessBuilder.environment ສຳລັບຕົວດາວໂຫຼດ; ຄຸນສົມບັດ proxy -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 ບໍ່ໄດ້ຕັ້ງຄຸນສົມບັດນັ້ນ.