需要HTTP 407代理身份验证:如何使用Java代码处理

System.setProperty(“http.proxySet”, “true”);

System.setProperty("java.net.useSystemProxies”, “true”);

System.setProperty(“http.proxyHost”, “192.168.1.103”);

System.setProperty(“http.proxyPort”, “3128”);

System.setProperty(“http.proxyUser”, “user123”);

System.setProperty(“http.proxyPassword”, “passwD123”);

url = new URL("http://www.google.co.in");

每次使用此代码时,都会抛出IOException异常,该异常表示HTTP

响应代码407。HTTP407表示需要进行代理身份验证。为什么

在设置proxyUser和proxyPassword时会出现此问题。在此处输入图片说明

如果我输入了错误的密码,则会出现http 401,但它始终会给我407,这意味着

我的代码未使用用户名和密码。在上面的代码中,user123是用户名

,passwD123是用于代理身份验证的密码。

回答:

http://blog.vinodsingh.com/2008/05/proxy-authentication-in-java.html

感谢Vinod Singh先生,我找到了解决方案。

Java中的代理身份验证

普通的公司网络通过代理服务器提供Internet访问,有时还需要身份验证。可能应用程序会打开

与公司Intranet外部服务器的连接。因此,必须以编程方式进行代理身份验证。幸运的是,Java提供了一种

透明的机制来执行代理身份验证。

创建一个像下面这样的简单类-

import java.net.Authenticator;

class ProxyAuthenticator extends Authenticator {

private String user, password;

public ProxyAuthenticator(String user, String password) {

this.user = user;

this.password = password;

}

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(user, password.toCharArray());

}

}

并在您的代码打开URLConnection-之前放置这些代码行

Authenticator.setDefault(new ProxyAuthenticator("user", "password"));

System.setProperty("http.proxyHost", "proxy host");

System.setProperty("http.proxyPort", "port");

现在,所有呼叫将成功通过代理身份验证。

以上是 需要HTTP 407代理身份验证:如何使用Java代码处理 的全部内容, 来源链接: utcz.com/qa/415363.html

回到顶部