Apache Commons Net FTP 不会对错误的凭据抛出任何异常
Apache Commons Net FTP does not throw any exception on wrong credentials
我刚刚使用 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;
}
你的错误处理是错误的。
当凭据错误时,FTPClient.login
不会抛出异常。它returns一个false
。你不测试那个。您的代码继续,尝试使用未经授权的会话,所有这些显然也会失败。
但是 FTPClient.storeFile
也是如此,它也只是 returns false
,您的代码基本上不会发现任何错误。
我刚刚使用 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;
}
你的错误处理是错误的。
当凭据错误时,FTPClient.login
不会抛出异常。它returns一个false
。你不测试那个。您的代码继续,尝试使用未经授权的会话,所有这些显然也会失败。
但是 FTPClient.storeFile
也是如此,它也只是 returns false
,您的代码基本上不会发现任何错误。