0

我正在使用FTPClientapache 从我的服务器获取特定文件的大小。所以,我在 android 中遇到的错误是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 回答
0

每当返回 530 错误代码时,这意味着您的用户名或密码不正确。由于登录失败,您无法上传文件。

于 2018-05-11T08:01:27.553 回答