2015-10-30 2 views
0

Я пытаюсь реализовать загрузку ftp в java. Я использую апачскую общие чистую библиотеку, но я получаю это exception.I есть ниже трассировка стеки распечатана я не уверен, что я пропускаюApache commons-net Ошибка FTP

org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication. 
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:317) 
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294) 
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:483) 
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:608) 
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:582) 
at org.apache.commons.net.ftp.FTP.pasv(FTP.java:1007) 
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:869) 
at org.apache.commons.net.ftp.FTPClient._retrieveFile(FTPClient.java:1854) 
at org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1845) 

У меня есть метод следующего

public void downloadFromFtp(Map<String, String> ftpMap, String sourceWithPath, 
     String destinationFolder) throws IOException { 

    String hostname = ftpMap.get("hostname"); 
    String username = ftpMap.get("username"); 
    String password = ftpMap.get("password"); 

    if (null == hostname || null == username || null == password) { 
     throw new InvalidInputException(
      "Invalid RMS FTP hostname/username/password"); 
    } 
    //Connect to ftp url 
    ftpClient.connect(hostname, 21); 
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 

    //login to server 
    if (!ftpClient.login("username", "password")) { 
     ftpClient.logout(); 
    } 
    int reply = ftpClient.getReplyCode(); 
    //FTPReply stores a set of constants for FTP reply codes. 
    if (!FTPReply.isPositiveCompletion(reply)) { 
     ftpClient.disconnect(); 
    } 

    //enter passive mode 
    ftpClient.enterLocalPassiveMode(); 
    File tempFile = new File(sourceWithPath); 

    OutputStream output = 
     new BufferedOutputStream(new FileOutputStream(destinationFolder + "/" + tempFile.getName())); 

    ftpClient.retrieveFile(sourceWithPath, output); 

    output.close(); 

    ftpClient.logout(); 
    ftpClient.disconnect(); 
    } 

Пожалуйста, помогите, чего я не пропустил.

ответ

4

Извините! за мою глупость

//login to server 
if (!ftpClient.login("username", "password")) { 
    ftpClient.logout(); 
} 

Вот ошибка, делает выход из системы дважды

Смежные вопросы