我正在使用 apache 的 FTPClient 来从我的服务器获取特定文件的大小。所以,我在 android 中遇到的错误是 530 You isn't Log in
。而我的代码如下所示,并且我已经用纯 Java 对其进行了测试。我不知道为什么在 Android 上会出现此错误,但在 Java 中一切正常。
client.connect("my-server-ip");
client.login("username", "password");
client.setKeepAlive(true);
client.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE);
client.setFileTransferMode(FTP.BINARY_FILE_TYPE);
client.sendCommand("SIZE " + "file-path");
try {
sizeStr = client.getReplyString().trim();
this.M_fileData.M_contentLength = Long.parseLong(sizeStr.split(" ")[1]);
System.out.println(sizeStr);
} catch (NumberFormatException e) {
e.printStackTrace();
client.disconnect();
}
Java 纯结果是:213 1757682
,而 Android 结果是 530 You isn't Log in
。
谁能解释一下如何解决这个问题吗?
提前致谢。
最佳答案
- 首先,我希望您确保已授予 android.permission.INTERNET
权限。
为了进一步引用,我向您提供了我在 Android 应用程序中用于下载音乐剪辑的代码。
我使用了Apache的commons库
public void goforIt(){
FTPClient con = null;
try
{
con = new FTPClient();
con.connect("50.xx.xx.xx");
if (con.login("Adminxxxxx", "KUjWbk361wobbyl-xxxxxx"))
{
con.enterLocalPassiveMode(); // important!
con.setFileType(FTP.BINARY_FILE_TYPE);
String data = "/sdcard/vivek.m4a";
OutputStream out = new FileOutputStream(new File(data));
boolean result = con.retrieveFile("vivekm4a.m4a", out);
out.close();
if (result) Log.v("download result", "succeeded");
con.logout();
con.disconnect();
}
}
catch (Exception e)
{
Log.v("download result","failed");
e.printStackTrace();
}
}
关于java - Apache FTP客户端 : 530 You aren't logged in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12218336/