Android Studio Apache Commons Net FTP不会对错误的凭据抛出任何异常

4nkexdtk  于 6个月前  发布在  Android
关注(0)|答案(1)|浏览(73)

我刚刚使用Apache Commons Net FTP上传了一些文件到FTP服务器。当我使用一切正常时,它工作正常,我的意思是,文件上传工作正常,但当我使用,例如,FTP帐户的密码错误时,显然文件不会上传到服务器,但我也没有收到错误消息。换句话说:我不知道如何显示错误.我试图用吐司从Exception显示e.getMessage(),但什么都没有显示.有没有任何文档可以帮助我?或者我错过了什么,你可以帮助我?谢谢!
下面是我的代码:

@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;
}

字符串

ajsxfq5m

ajsxfq5m1#

您的错误处理是错误的。
FTPClient.login不会 * 抛出异常 *,当凭证是错误的。它 * 返回 * 一个false。你不测试。你的代码继续,尝试与未授权的会话,所有这些显然也会失败。
但是对于FTPClient.storeFile也是如此,它也只返回false,您的代码基本上不会注意到任何错误。

相关问题