2012-09-24 76 views
1

我想用戶StaticUserAuthenticator通過ApacheVFS2 FTP連接 - 我有以下代碼:StaticUserAuthenticator不設置FTP用戶名在VFS2

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.FtpLoginException:用戶匿名:501使用用戶@網站通過代理

連接當我在這個運行網絡跟蹤我看到傳遞到FTP服務器的用戶arg是「匿名' T 10.161.37.176:57650 - > 10.152.4.138:21 [AP] USER匿名..

任何想法我做錯了什麼?

回答

1

好吧,沒有那麼複雜,因爲我以爲

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

不知道它的非空第一個參數的StaticUserAuthenticator構造函數,或者說這樣做是被動模式,但它的工作原理這些變化。