Apache Commons Net-ը պարունակում է FTPHTTPClient՝ FTP-ն HTTP CONNECT վստահված սերվերի միջով օգտագործելու համար։ Դրա օգտակար հատկությունը ոչ միայն FTP մուտքի պորտին հասնելն է. այն նաև վստահված սերվերի թունելներ է ստեղծում պասիվ տվյալների միացումների համար, որոնք օգտագործում են ցանկերը և ֆայլերի փոխանցումները։

Կոնստրուկտորը ընդունում է վստահված սերվերի վերջնակետը և ըստ ցանկության վստահված սերվերի հավատարմագրերը։ 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();
    }
}

Փոխանցման այս հատվածը ենթադրում է Commons Net-ի FTP ներմուծումները, java.io.IOException-ը, հավելվածի տրամադրած հավատարմագրերի փոփոխականները և զանգահարողին պատկանող ելքային հոսք։ remoteFile-ը սերվերի կողմում նախատեսված ֆայլի անունն է։ Հավելվածը պետք է նաև փակի իր ելքային հոսքը համապատասխան պահին։

Սահմանեք պասիվ ռեժիմը միանալուց հետո և տվյալների գործողությունից առաջ։ FTPHTTPClient-ի իրականացումը մերժում է տվյալների միացումները ակտիվ ռեժիմում։ Պասիվ ռեժիմում այն բանակցում է տվյալների վերջնակետը FTP-ի հետ և բացում է ևս մեկ միացում դեպի HTTP վստահված սերվեր, ապա պահանջում է CONNECT թունել այդ վերջնակետին։

Այդ երկրորդ թունելը բացատրում է սովորական սահման. վստահված սերվերի թույլտվությունը FTP կառավարման պորտի համար բավարար չէ։ Թույլատրված նպատակակետերը և պորտերը պետք է ներառեն սերվերի պասիվ տվյալների վերջնակետերը։ Հաջող ողջույնը և մուտքը միայն ապացուցում են, որ կառավարման ուղին աշխատել է։

Իրականացումը տրամադրում է Basic վստահված սերվերի նույնականացում, երբ առկա են և՛ վստահված սերվերի օգտանունը, և՛ գաղտնաբառը։ Սա տարբերվում է FTP USER/PASS փոխանակումից։ Այլ նույնականացման մեխանիզմ պահանջող վստահված սերվերը կարիք ունի համատեղելի միակցիչի. կոնստրուկտորը հասանելի չի դարձնում բոլոր սխեմաները։

Commons Net-ը այս դասը փաստագրում է որպես փորձարարական, ուստի գնահատեք այն հավելվածի և վստահված սերվերի պահանջներին համապատասխան՝ նախքան ընդունելը։ Այն FTP հաճախորդ է, ոչ FTPS կամ SFTP հաճախորդ։ Հասանելի SOCKS ծառայության դեպքում FTPS-ի համար FTPSClient-ի socket-proxy ինտերֆեյսը առանձին հաճախորդային ուղի է։ CONNECT-ը տրամադրում է ուղին և ինքը չի գաղտնագրում FTP հավատարմագրերը կամ ֆայլերի բովանդակությունը։

Պահեք սխալները կապված այն փուլի հետ, որն առաջացրել է դրանք. HTTP մերժում թունելի կարգավորման ընթացքում, FTP մուտքի մերժում կամ FTP/տվյալների փոխանցման ձախողում։ FTP գաղտնաբառի փոխարինումը չի կարող լուծել վստահված սերվերի քաղաքականությունը, որը մերժում է պասիվ տվյալների պորտը։

Առնչվող հոդվածներ