StaticUserAuthenticator 不會在 VFS2 中設定 FTP 用户名



我正在尝试通过ApacheVFS2使用FTP连接使用StaticUserAuthenticator - 我有以下代码:

this.fsOptions = new FileSystemOptions();
StaticUserAuthenticator auth = new StaticUserAuthenticator(null, username, password); 
DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOptions, auth); 
this.fsManager = VFS.getManager();
// ... later
FileObject file = fsManager.resolveFile("ftp://myhost:21/pathtofile.ext".toString(), fsOptions);
FileContent content = file.getContent();

这会导致引发以下异常:

org.apache.commons.vfs2.FileSystemException:无法读取文件"ftp://myhost:21/pathtofile.ext"。由以下原因引起:sun.net.ftp.Ftp登录异常:用户匿名:501 使用user@site通过代理进行连接

当我对此运行网络跟踪时,我看到传递给FTP服务器的用户arg是"匿名的"电话 10.161.37.176:57650 -> 10.152.4.138:21 [AP] 用户匿名..

知道我做错了什么吗?

好的,没有我想象的那么棘手

UserAuthenticator auth = new StaticUserAuthenticator("", username, password); 
DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(fsOptions, auth); 
FtpFileSystemConfigBuilder.getInstance().setPassiveMode(fsOptions, true);

不确定它是 StaticUserAuthenticator 构造函数的非空第一个参数,还是执行此操作的被动模式,但通过这些更改它可以工作。

相关内容

  • 没有找到相关文章

最新更新