1

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.FtpLoginException: user anonymous : 501 user@site を使用してプロキシ経由で接続する

これでネットワーク トレースを実行すると、FTP サーバーに渡されたユーザー引数が「匿名」であることがわかります T 10.161.37.176:57650 -> 10.152.4.138:21 [AP] USER anonymous..

私が間違っていることは何か分かりますか?

4

1 に答える 1

1

わかりました、思ったほどトリッキーではありません

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

StaticUserAuthenticator コンストラクターへの null 以外の最初の引数なのか、それを実行したパッシブ モードなのかはわかりませんが、これらの変更により機能します。

于 2012-09-24T14:31:30.707 に答える