2

org.apache.commons.net.ftp.FTPClient を使用して、プロキシ経由で FTP サーバーに接続しようとしています。システム プロパティが次のように正しく設定されていることを確認します。

Properties props = System.getProperties();
props.put("ftp.proxySet", "true");
// dummy details
props.put("ftp.proxyHost", "proxy.example.server");
props.put("ftp.proxyPort", "8080");

接続を作成すると UnknownHostException が発生します。これは、接続がプロキシを通過していないことを意味していると確信しています。

この接続タイプでユーザー資格情報をプロキシに渡す方法。

ところで、次を使用して同じプロキシを介して URLConnection を正常に作成できます。Apache FTPClient に相当するものはありますか?

conn = url.openConnection();
String password = "username:password";
String encodedPassword = new String(Base64.encodeBase64(password.getBytes()));
conn.setRequestProperty("Proxy-Authorization", encodedPassword);
4

2 に答える 2

2

プロキシを使用する場合は、FTPHTTPClientを使用するのはどうですか。

if(proxyHost !=null) {
  System.out.println("Using HTTP proxy server: " + proxyHost);
  ftp = new FTPHTTPClient(proxyHost, proxyPort, proxyUser, proxyPassword);
}
else {
  ftp = new FTPClient();
} 
于 2012-06-07T11:05:36.383 に答える
0

を使用する必要があると思いますAuthenticator

private static class MyAuthenticator extends Authenticator {
    private String username;
    private String password;
    public MyAuthenticator(String username, String password) {
        super();
        this.username = username;
        this.password = password;
    }
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password.toCharArray());
    }
}

public static void main(String[] args) {
    Authenticator.setDefault(new MyAuthenticator("foo", "bar"));
    System.setProperty("...", "...");
}
于 2011-07-07T12:38:25.620 に答える