Apache Commons Net inajumuisha FTPHTTPClient kwa FTP kupitia proksi ya HTTP CONNECT. Sifa yake muhimu si tu kufikia lango la kuingia la FTP: pia huweka vichuguu vya proksi kwa miunganisho tulivu ya data inayotumiwa na orodha na uhamishaji wa faili.

Kijenzi hukubali ncha ya mwisho ya proksi na vitambulisho vya hiari vya proksi. Seva ya FTP inabaki kuwa hoja ya connect, na login hupokea akaunti ya 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();
    }
}

Kipande hiki cha uhamishaji kinadhani uingizaji wa FTP wa Commons Net, java.io.IOException, vigeu vya vitambulisho vinavyotolewa na programu na mtiririko wa pato unaomilikiwa na mwitaji. remoteFile ni jina la faili linalokusudiwa upande wa seva. Programu pia lazima ifunge mtiririko wake wa pato kwa wakati ufaao.

Weka hali tulivu baada ya kuunganisha na kabla ya operesheni ya data. Utekelezaji wa FTPHTTPClient hukataa miunganisho ya data katika hali hai. Katika hali tulivu, hujadili ncha ya data na FTP na hufungua muunganisho mwingine kwa proksi ya HTTP, kisha huomba kichuguu cha CONNECT kuelekea ncha hiyo.

Kichuguu hicho cha pili kinaeleza mpaka wa kawaida: ruhusa ya proksi kwa lango la udhibiti la FTP haitoshi. Maeneo na milango inayoruhusiwa lazima ijumuishe ncha tulivu za data za seva. Salamu na kuingia kwa mafanikio huthibitisha tu kwamba njia ya udhibiti ilifanya kazi.

Utekelezaji hutoa uthibitishaji wa proksi wa Basic wakati jina la mtumiaji na nenosiri vya proksi vyote vipo. Hilo ni tofauti na ubadilishanaji wa FTP USER/PASS. Proksi inayohitaji utaratibu mwingine wa uthibitishaji inahitaji kiunganishi kinachofaa; kijenzi hakifanyi kila mpango upatikane.

Commons Net huandika darasa hili kama la majaribio, kwa hivyo litathmini kulingana na mahitaji ya programu na proksi kabla ya kulikubali. Ni mteja wa FTP, si mteja wa FTPS au SFTP. Kwa FTPS ikiwa huduma ya SOCKS inapatikana, kiolesura cha soketi-proksi cha FTPSClient ni njia tofauti ya mteja. CONNECT hutoa njia na yenyewe haisimboi vitambulisho vya FTP au maudhui ya faili.

Weka hitilafu zikihusishwa na hatua iliyozizalisha: kukataliwa kwa HTTP wakati wa kuweka kichuguu, kukataliwa kwa kuingia FTP, au kushindwa kwa uhamishaji wa FTP/data. Kubadilisha nenosiri la FTP hakuwezi kutatua sera ya proksi inayokataa lango tulivu la data.

Makala zinazohusiana