Java 代理身份验证失败错误

Java 代理身份验证失败错误,java,authentication,ftp,Java,Authentication,Ftp,我正试图通过FTP站点代理访问FTP服务器,以便使用it.sauronsoftware.ftp4j.FTPClient绕过防火墙。我知道我的用户名/密码是正确的,因为我可以使用FileZilla进行连接。我尝试使用验证器,但没有用。代码: import java.net.Authenticator; import it.sauronsoftware.ftp4j.FTPClient; import it.sauronsoftware.ftp4j.connectors.FTPProxyConnect

我正试图通过FTP站点代理访问FTP服务器,以便使用
it.sauronsoftware.ftp4j.FTPClient
绕过防火墙。我知道我的用户名/密码是正确的,因为我可以使用FileZilla进行连接。我尝试使用
验证器
,但没有用。代码:

import java.net.Authenticator;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.connectors.FTPProxyConnector;
...
    FTPClient client = new FTPClient();
        FTPProxyConnector connector = new FTPProxyConnector(String "proxyHost", int proxyPort);
        client.setConnector(connector);

        Authenticator.setDefault(new Authenticator() {
        @Override
             public PasswordAuthentication getPasswordAuthentication() {
                       return new PasswordAuthentication("proxyUser", "proxyPass".toCharArray());
         }});

        System.setProperty("ftp.proxyHost", "proxyHost");
        System.setProperty("ftp.proxyPort", "proxyPort");
        System.setProperty("ftp.proxyUser", "proxyUser");
        System.setProperty("ftp.proxyPass", "proxyPass");

        System.out.println("Proxy Accessed");

        client.connect("ftpHost");
        client.login("ftpUser", "ftpPass");
给我这个错误:
java.io.IOException:代理身份验证失败

我尝试过的事情:

  • 使用替代构造函数
    (String,int,String,String)
  • 删除身份验证器
  • 仅使用
    验证器
    ,而不使用FTPProxy连接器
  • 在设置连接器之前进行身份验证,反之亦然
但是,当我仅使用验证器时,会出现另一个错误,即
连接超时

这两个错误都发生在
client.connect(“ftpHost”)

任何帮助都将不胜感激

注:


编辑:我发现该代理用于绕过防火墙1检查点——如果这有帮助的话。

检查密码属性名称。它的名称是ftp.proxyPassword,而不是ftp.proxyPass

System.setProperty("ftp.proxyUser", "proxyUser");
System.setProperty("ftp.proxyPassword", "proxyPass");
System.setProperty("ftp.proxyUser", "proxyUser");
System.setProperty("ftp.proxyPassword", "proxyPass");

试试看,让我们知道你的结果

检查密码属性名称。它的名称是ftp.proxyPassword,而不是ftp.proxyPass

System.setProperty("ftp.proxyUser", "proxyUser");
System.setProperty("ftp.proxyPassword", "proxyPass");
System.setProperty("ftp.proxyUser", "proxyUser");
System.setProperty("ftp.proxyPassword", "proxyPass");

试试看,让我们知道你的结果

我找到了解决办法

我发现FTP客户端使用不同的响应代码进行响应:

200通过防火墙身份验证的用户-1身份验证

FTPProxyConnector
的源代码中,一种非常规的响应代码

230已连接到服务器。登录…

将抛出一个错误


我必须为
FTPProxyConnector
反编译类文件,然后修改源代码,然后重新编译并将其保存回jar。工作起来很有魅力。

你在哪里附加了
验证器
FTPProxyConnector
?还有,你为什么不使用
FTPProxyConnector
@RavindraGullapalli的另一个构造函数呢?我尝试了调用(主机、端口、用户名、密码)的构造函数,但它仍然给出了相同的错误,表示代理身份验证失败。我还在顶部导入了验证器和FTPProxyConnector。请改进您的第一个问题,而不是再次发布。您希望我如何改进它?请告诉我需要添加什么,因为我相信我已经在这里发布了与我的问题相关的所有内容。感谢修复,但我仍然收到
java.io.IOException:Proxy authentication failed
错误。我尝试过使用您的方法,无论是否使用
FTPProxyConnector
,但都没有用。但是,当我不使用
FTPProxyConnector
时,我收到一个错误
java.net.SocketTimeoutException:connect超时
。感谢您的修复,但我仍然收到一个
java.io.IOException:Proxy authentication failed
错误。我尝试过使用您的方法,无论是否使用
FTPProxyConnector
,但都没有用。但是,当我不使用
FTPProxyConnector
时,会出现一个错误
java.net.SocketTimeoutException:connect超时。