Apache Commons Net లో HTTP CONNECT ప్రాక్సీ ద్వారా FTP కోసం FTPHTTPClient ఉంది. దాని ఉపయోగకరమైన లక్షణం 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 యొక్క సాకెట్-ప్రాక్సీ ఇంటర్‌ఫేస్ ప్రత్యేక క్లయింట్ మార్గం. CONNECT మార్గాన్ని అందిస్తుంది మరియు FTP ఆధారాలను లేదా ఫైల్ కంటెంట్‌ను తానే గుప్తీకరించదు.

లోపాలను అవి ఉత్పన్నమైన దశతో అనుసంధానించి ఉంచండి: సొరంగం సెటప్ సమయంలో HTTP తిరస్కరణ, FTP లాగిన్ నిరాకరణ, లేదా FTP/డేటా బదిలీ వైఫల్యం. FTP పాస్‌వర్డ్ మార్చడం నిష్క్రియ డేటా పోర్టును తిరస్కరించే ప్రాక్సీ విధానాన్ని పరిష్కరించలేదు.

సంబంధిత వ్యాసాలు