需要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