Apache Commons Net ມີ FTPHTTPClient ສຳລັບ FTP ຜ່ານ HTTP CONNECT proxy. ລັກສະນະທີ່ເປັນປະໂຫຍດຂອງມັນບໍ່ພຽງແຕ່ການໄປຮອດພອດເຂົ້າສູ່ລະບົບ FTP: ມັນຍັງສ້າງອຸໂມງ proxy ສຳລັບການເຊື່ອມຕໍ່ຂໍ້ມູນແບບ passive ທີ່ໃຊ້ໂດຍລາຍການ ແລະ ການໂອນໄຟລ໌.

ຕົວສ້າງຮັບຈຸດປາຍທາງຂອງ proxy ແລະ ຂໍ້ມູນຢືນຢັນ proxy ທີ່ເປັນທາງເລືອກ. ເຊີບເວີ FTP ຍັງຄົງເປັນອາກິວເມັນຂອງ connect, ແລະ login ຮັບບັນຊີ FTP:

FTPHTTPClient ftp = new FTPHTTPClient(
    "proxy.example.net", 8080, proxyUser, proxyPassword
);

try {
    ftp.connect("ftp.example.net", 21);
    if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
        throw new IOException(ftp.getReplyString());
    }
    if (!ftp.login(ftpUser, ftpPassword)) {
        throw new IOException(ftp.getReplyString());
    }

    ftp.enterLocalPassiveMode();
    if (!ftp.setFileType(FTP.BINARY_FILE_TYPE)
            || !ftp.retrieveFile(remoteFile, output)) {
        throw new IOException(ftp.getReplyString());
    }
    ftp.logout();
} finally {
    if (ftp.isConnected()) {
        ftp.disconnect();
    }
}

ສ່ວນຂອງການໂອນນີ້ສົມມຸດວ່າມີການນຳເຂົ້າ FTP ຂອງ Commons Net, java.io.IOException, ຕົວແປຂໍ້ມູນຢືນຢັນທີ່ແອັບພລິເຄຊັນສະໜອງ ແລະ ສະຕຣີມຜົນອອກທີ່ຜູ້ເອີ້ນເປັນເຈົ້າຂອງ. remoteFile ແມ່ນຊື່ໄຟລ໌ທີ່ຕັ້ງໃຈໄວ້ຝັ່ງເຊີບເວີ. ແອັບພລິເຄຊັນຕ້ອງປິດສະຕຣີມຜົນອອກຂອງຕົນໃນຈຸດທີ່ເໝາະສົມນຳ.

ຕັ້ງໂໝດ passive ຫຼັງຈາກເຊື່ອມຕໍ່ ແລະ ກ່ອນການດຳເນີນການຂໍ້ມູນ. ການຈັດຕັ້ງ FTPHTTPClient ປະຕິເສດການເຊື່ອມຕໍ່ຂໍ້ມູນໃນໂໝດ active. ໃນໂໝດ passive ມັນເຈລະຈາຈຸດປາຍທາງຂໍ້ມູນກັບ FTP ແລະ ເປີດການເຊື່ອມຕໍ່ອີກອັນໜຶ່ງໄປຫາ HTTP proxy, ແລ້ວຮ້ອງຂໍອຸໂມງ CONNECT ໄປຫາຈຸດປາຍທາງນັ້ນ.

ອຸໂມງທີສອງນັ້ນອະທິບາຍຂອບເຂດທົ່ວໄປ: ການອະນຸຍາດ proxy ສຳລັບພອດຄວບຄຸມ FTP ຍັງບໍ່ພຽງພໍ. ປາຍທາງ ແລະ ພອດທີ່ໄດ້ຮັບອະນຸຍາດຕ້ອງລວມຈຸດປາຍທາງຂໍ້ມູນແບບ passive ຂອງເຊີບເວີ. ການທັກທາຍ ແລະ ການເຂົ້າສູ່ລະບົບທີ່ສຳເລັດພຽງແຕ່ພິສູດວ່າເສັ້ນທາງຄວບຄຸມໄດ້ເຮັດວຽກ.

ການຈັດຕັ້ງສະໜອງການຢືນຢັນ proxy ແບບ Basic ເມື່ອມີທັງຊື່ຜູ້ໃຊ້ ແລະ ລະຫັດຜ່ານຂອງ proxy. ນີ້ແຕກຕ່າງຈາກການແລກປ່ຽນ USER/PASS ຂອງ FTP. proxy ທີ່ຕ້ອງການກົນໄກຢືນຢັນອື່ນຕ້ອງການ connector ທີ່ເຂົ້າກັນໄດ້; ຕົວສ້າງບໍ່ໄດ້ເຮັດໃຫ້ທຸກຮູບແບບສາມາດໃຊ້ໄດ້.

Commons Net ບັນທຶກຄລາສນີ້ວ່າເປັນການທົດລອງ, ດັ່ງນັ້ນຈົ່ງປະເມີນມັນທຽບກັບຄວາມຕ້ອງການຂອງແອັບພລິເຄຊັນ ແລະ proxy ກ່ອນຮັບເອົາ. ມັນເປັນ client FTP, ບໍ່ແມ່ນ client FTPS ຫຼື SFTP. ສຳລັບ FTPS ທີ່ມີບໍລິການ SOCKS, ອິນເຕີເຟສ socket-proxy ຂອງ FTPSClient ເປັນເສັ້ນທາງ client ແຍກຕ່າງຫາກ. CONNECT ສະໜອງເສັ້ນທາງ ແລະ ບໍ່ໄດ້ເຂົ້າລະຫັດຂໍ້ມູນຢືນຢັນ FTP ຫຼື ເນື້ອຫາໄຟລ໌ດ້ວຍຕົນເອງ.

ເກັບຂໍ້ຜິດພາດໄວ້ກັບຂັ້ນຕອນທີ່ເຮັດໃຫ້ເກີດ: ການປະຕິເສດ HTTP ລະຫວ່າງການຕັ້ງອຸໂມງ, ການປະຕິເສດການເຂົ້າສູ່ລະບົບ FTP, ຫຼື ຄວາມລົ້ມເຫຼວຂອງການໂອນ FTP/ຂໍ້ມູນ. ການປ່ຽນລະຫັດຜ່ານ FTP ບໍ່ສາມາດແກ້ໄຂນະໂຍບາຍ proxy ທີ່ປະຕິເສດພອດຂໍ້ມູນແບບ passive ໄດ້.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ