Home > Mobile >  Apache Commons Net FTP does not throw any exception on wrong credentials
Apache Commons Net FTP does not throw any exception on wrong credentials

Time:05-02

I just managed to upload some files to an FTP server using Apache Commons Net FTP. When I use everything as it should be it works fine, I mean, the file uploading is working, but when I use, for example, a wrong password for the FTP account, obviously the files don't get uploaded to the server, but I don't get an error message either. In other words: I don't know how to show the error. I tried to show with a toast the e.getMessage() from the Exception but nothing is shown. Is there any documentation that would help me? Or am I missing something you could help me with? thank you!

This is my code:

@Override
protected Void doInBackground(Void... voids) {
    FTPClient ftpClient=new FTPClient();
    try {
        ftpClient.connect(fserver);
        ftpClient.login(fusername,fpassword);
        ftpClient.enterLocalPassiveMode();

        dirArch = new ArrayList<>();
        for (int k=0;k<adapter.getSelected().size();k  ){
            dirArch.add(adapter.getSelected().get(k).getArch());
        }
        for (String archTXT : dirArch){
            File fileX =new File(stringFolder,archTXT);
            InputStream inputStream=new FileInputStream(fileX);
            ftpClient.storeFile(archTXT,inputStream);
            inputStream.close();
            pbPorc=pbPorc pbSum;
            pb1.setProgress(pbPorc);
            pb2.setProgress(pbPorc);
        }
        ftpClient.logout();
        ftpClient.disconnect();
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(ExportTracks.this,e.getMessage(),Toast.LENGTH_LONG).show();
    }
    return null;
}

CodePudding user response:

Your error handling is wrong.

The FTPClient.login does not throw an exception, when the credentials are wrong. It returns a false. You do not test for that. Your code carries on, trying to work with not authorized session instead, all of which will obviously fail too.

But as the same is true for FTPClient.storeFile, which also just returns false, your code basically does not notice any errors.

  • Related