Mae Apache Commons Net yn cynnwys FTPHTTPClient ar gyfer FTP drwy brocsi HTTP CONNECT. Nid yw ei nodwedd ddefnyddiol yn unig yn cyrraedd porth mewngofnodi FTP: mae hefyd yn sefydlu twneli procsi ar gyfer y cysylltiadau data goddefol a ddefnyddir gan restrau a throsglwyddiadau ffeiliau.

Mae'r adeiladydd yn derbyn pen draw'r procsi a chredensialau procsi dewisol. Mae'r gweinydd FTP yn parhau i fod yn arg i connect, ac mae login yn derbyn y cyfrif 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();
    }
}

Mae'r darn trosglwyddo hwn yn tybio mewnforion FTP Commons Net, java.io.IOException, newidynnau credensialau a ddarperir gan y rhaglen, a ffrwd allbwn sy'n eiddo i'r galwr. remoteFile yw'r enw ffeil arfaethedig ar ochr y gweinydd. Rhaid i'r rhaglen hefyd gau ei ffrwd allbwn ar y pwynt priodol.

Gosodwch y modd goddefol ar ôl cysylltu ac o flaen gweithrediad data. Mae gweithrediad FTPHTTPClient yn gwrthod cysylltiadau data yn y modd gweithredol. Yn y modd goddefol, mae'n trafod pen draw'r data gyda FTP ac yn agor cysylltiad arall i'r procsi HTTP, yna'n gofyn am dwnnel CONNECT i'r pen draw hwnnw.

Mae'r ail dwnnel hwnnw'n egluro terfyn cyffredin: nid yw caniatâd procsi ar gyfer porth rheoli FTP yn ddigon. Rhaid i'r cyrchfannau a'r porthladdoedd a ganiateir gynnwys pen draw data goddefol y gweinydd. Dim ond bod y llwybr rheoli wedi gweithio y mae cyfarchiad a mewngofnodi llwyddiannus yn ei brofi.

Mae'r gweithrediad yn darparu dilysu procsi Basic pan fo enw defnyddiwr a chyfrinair y procsi ill dau yn bresennol. Mae hynny'n wahanol i gyfnewidiad FTP USER/PASS. Mae procsi sy'n gofyn am fecanwaith dilysu arall angen cysylltydd cydnaws; nid yw'r adeiladydd yn gwneud pob cynllun ar gael.

Mae Commons Net yn dogfennu'r dosbarth hwn fel un arbrofol, felly gwerthuswch ef yn erbyn gofynion y rhaglen a'r procsi cyn ei fabwysiadu. Cleient FTP ydyw, nid cleient FTPS na SFTP. Ar gyfer FTPS gyda gwasanaeth SOCKS ar gael, mae rhyngwyneb soced-procsi FTPSClient yn llwybr cleient ar wahân. Mae CONNECT yn darparu'r llwybr ac nid yw ei hun yn amgryptio credensialau FTP na chynnwys ffeiliau.

Cadwch wallau'n gysylltiedig â'r cam a'u cynhyrchodd: gwrthodiad HTTP wrth sefydlu'r twnnel, gwrthodiad mewngofnodi FTP, neu fethiant trosglwyddo FTP/data. Ni all disodli cyfrinair FTP ddatrys polisi procsi sy'n gwrthod y porth data goddefol.

Erthyglau cysylltiedig