0

FTPClientサーバーから特定のファイルのサイズを取得するためにApacheを使用しています。だから、私がアンドロイドで直面したエラーは530 You aren't logged 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 aren't logged in.

誰でもこれを解決する方法を説明できますか?

前もって感謝します。

4

2 に答える 2

1

-まず、android.permission.INTERNET許可を与えていることを確認してください。

さらに参考までに、Android アプリケーションで音楽クリップをダウンロードするために使用したコードを提供します。

私は使用しましたApache's commons library

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();
        }



    }
于 2012-08-31T17:25:01.080 に答える