0

私は先週から Apache Commons FTP Library を扱ってきましたが、これは大変な苦痛です。どのオンライン FTP にも接続できませんが、アクセスできないルーターの設定に問題がある可能性があります。とにかく、ハード ドライブにローカル FTP を作成するために IIS を使用しました。やっとこのFTPで接続できました。

涼しい。この FTP は Internet Explorer でも動作します。

ftpGetCurrentWorkingDirectory() 関数も正常に動作し、文字列「/」を返します

しかし、listFiles 関数にはクラッシュがあります (2 番目のメソッドは、最初のメソッドを呼び出す別のスレッドにあります)。

    public static void ftpPrintFilesList(String dir_path) {
    try {
        Log.e(TAG, "1");
        FTPFile[] ftpFiles = mFTPClient.listFiles(dir_path);
        int length = ftpFiles.length;
        Log.e(TAG, "2, length: " + length);
        for (int i = 0; i < length; i++) {
            String name = ftpFiles[i].getName();
            boolean isFile = ftpFiles[i].isFile();
            Log.e(TAG, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"+ name);
            if (isFile) {
                Log.i(TAG, "File : " + name);
            } else {
                Log.i(TAG, "Directory : " + name);
            }
            Log.e(TAG, "3 ????"+ name);

        }
    } catch (Exception e) {
         Log.e(TAG, "4 ####");
        e.printStackTrace();
    }

}



public void run(){
     if(FTP.ftpConnect(host, user, password, 21))
        {
            DotNetWSActivity.rslt="connected";
        }
        else
        {
            DotNetWSActivity.rslt="disconnected";
        } 
        //DotNetWSActivity.rslt2 = "cookie monster";
        FTP.ftpPrintFilesList(FTP.ftpGetCurrentWorkingDirectory());
        Boolean status1 = FTP.ftpDownload("test.txt", "/storage/sdcard");       
}

ログは、listFiles がキャッチされる例外を生成することを示しています。FTP.ftpGetCurrentWorkingDirectory() の代わりに「/」を渡そうとしましたが、違いはありません。.toString() を試してみましたが、まだ何もありません。私のローカル ftp は空ではありません。いくつかのファイルがあり、それらはエクスプローラーから見ることができます。FTP に正常に接続できるため、'FTP' は正しいオブジェクトです。

このライブラリの私のアプローチ/使用法で何が間違っているのか分かりますか? 私の問題に対する答えがない場合は、http
://www.enterprisedt.com/products/edtftpj/overview.html の使用を検討します。




///////////////////////////////////////////////
_ ////////////////
上記のログを以下に添付します:
////////////////////////// //////
////////////////////////////////

10-17 09:51:05.312: I/Choreographer(967): Skipped 45 frames!  The application may be doing too much work on its main thread.

10-17 09:51:33.881: D/gralloc_goldfish(1015): Emulator without GPU emulation detected.

10-17 09:52:00.761: I/Choreographer(1015): Skipped 36 frames!  The application may be doing too much work on its main thread.

**10-17 09:52:52.111: E/(1015): 1**

**10-17 09:52:52.654: E/(1015): 4 ####**

10-17 09:52:52.661: W/System.err(1015): java.net.ConnectException: failed to connect to /127.0.0.1 (port 49867): connect failed: ECONNREFUSED (Connection refused)

10-17 09:52:52.692: W/System.err(1015):     at libcore.io.IoBridge.connect(IoBridge.java:114)

10-17 09:52:52.692: W/System.err(1015):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)

10-17 09:52:52.701: W/System.err(1015):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

10-17 09:52:52.701: W/System.err(1015):     at java.net.Socket.startupSocket(Socket.java:566)

10-17 09:52:52.711: W/System.err(1015):     at java.net.Socket.tryAllAddresses(Socket.java:127)

10-17 09:52:52.711: W/System.err(1015):     at java.net.Socket.<init>(Socket.java:177)

10-17 09:52:52.711: W/System.err(1015):     at java.net.Socket.<init>(Socket.java:149)

10-17 09:52:52.711: W/System.err(1015):     at javax.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:40)

10-17 09:52:52.721: W/System.err(1015):     at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:502)

10-17 09:52:52.721: W/System.err(1015):     at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2296)

10-17 09:52:52.731: W/System.err(1015):     at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2269)

10-17 09:52:52.731: W/System.err(1015):     at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2046)

10-17 09:52:52.731: W/System.err(1015):     at com.prgguru.android.FTP.ftpPrintFilesList(FTP.java:81)

10-17 09:52:52.741: W/System.err(1015):     at com.prgguru.android.Caller5.run(Caller5.java:25)

10-17 09:52:52.751: W/System.err(1015): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)

10-17 09:52:52.801: W/System.err(1015):     at libcore.io.Posix.connect(Native Method)

10-17 09:52:52.801: W/System.err(1015):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)

10-17 09:52:52.811: W/System.err(1015):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)

10-17 09:52:52.831: W/System.err(1015):     at libcore.io.IoBridge.connect(IoBridge.java:112)

10-17 09:52:52.863: W/System.err(1015):     ... 13 more

10-17 09:52:52.891: D/(1015): download failed


FTP に接続すると、すでに mFTPClient.enterLocalPassiveMode(); という行があります。

public static boolean ftpConnect(String host, String username,
        String password, int port) {
    try {
        mFTPClient = new FTPClient();

        mFTPClient.connect(host, port);
        if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
            boolean status = mFTPClient.login(username, password);
            mFTPClient.enterLocalPassiveMode();
            mFTPClient.setFileTransferMode(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);

            return status;
        }
    } catch (Exception e) {
        Log.d(TAG, "Error: could not connect to host " + host);
    }

    return false;
}
4

0 に答える 0