1

我目前正在开发一个必须将自己连接到本地 FTP 服务器的 Android 应用程序(我正在使用 Filezilla 服务器)。我已经下载了 org.commons.apache.net ftp 库。

这是我相对于我的 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:\”)!

有人可以帮我吗?

编辑:我发现我的错误。如果这可以帮助某人,我只需将 10.0.2.2 替换为我的本地 IP 地址(在我的情况下为 192.168.0.5)

4

0 回答 0