我目前正在开发一个Android应用程序,必须将自己连接到本地FTP服务器(我正在使用Filezilla服务器)。 我已经下载了org.commons.apache.net ftp librabry。
这是我的Android项目相关代码:
FTPClient mFTPClient = new FTPClient();
try {
mFTPClient = new FTPClient();
mFTPClient.connect("10.0.2.2", 21);
if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
mFTPClient.login("lucas", "elie");
mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
mFTPClient.enterLocalPassiveMode();
}
} catch (SocketException e) {
Log.e("TEST", "SocketException: " + e.getStackTrace().toString() + " " + e.getMessage());
} catch (UnknownHostException e) {
Log.e("TEST", "UnknownHostException: " + e.getStackTrace().toString() + " " + e.getMessage());
} catch (IOException e) {
Log.e("TEST", "IOException: " + e.getStackTrace().toString() + " " + e.getMessage());
}
//
FileOutputStream desFileStream;
try {
desFileStream = new FileOutputStream("/mnt/sdcard/sample_0.jpg");
mFTPClient.retrieveFile("/sample_0.jpg", desFileStream);
desFileStream.close();
} catch (FileNotFoundException e) {
Log.e("TEST", "FileNotFoundException: " + e.getStackTrace().toString() + " " + e.getMessage());
} catch (IOException e) {
Log.e("TEST", "IOException: " + e.getStackTrace().toString() + " " + e.getMessage());
}
连接正常(mFTPClient.connect(“10.0.2.2”,21);),因为我可以在我的本地服务器界面上看到它,但是当我试图下载我的文件时(mFTPClient.retrieveFile(“ /sample_0.jpg“,desFileStream);),我在Logcat中得到一个IOException:
04-07 11:25:26.300:E / TEST(671):IOException:[Ljava.lang.StackTraceElement; @ 412ca688无法连接到/127.0.0.1(端口2832):连接失败:ECONNREFUSED(连接被拒绝) )
我确切地说,我在Android Manifest XML文件中添加了这两行:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
使用完全相同的代码,但在经典的Java项目中而不是Android项目中,所有工作都完美无缺(将10.0.2.2替换为127.0.0.1,将“/ mnt / sdcard”替换为“C:\”)!< / p>
有人可以帮我吗?
编辑:我发现了我的错误。如果这可以帮助某人,我只需要用我的本地IP地址替换10.0.2.2(在我的情况下为192.168.0.5)