首页  >  文章  >  Java  >  如何确保 HttpURLConnection 使用代理并处理身份验证?

如何确保 HttpURLConnection 使用代理并处理身份验证?

Susan Sarandon
Susan Sarandon原创
2024-11-08 15:25:01923浏览

How to Ensure HttpURLConnection Utilizes a Proxy and Handles Authentication?

为 HttpURLConnection 建立代理连接

当尝试确定 HttpURLConnection 是否正在使用代理时,以下代码可能会错误地返回 false:

conn = new URL(urlString).openConnection();
System.out.println("Proxy? " + conn.usingProxy());

尽管通过代理服务器连接,但仍会发生此行为。 Java 虚拟机 (JVM) 通常从操作系统设置中检索代理信息。但是,在某些情况下,JVM 可能不知道代理配置。

代理和 JVM 代理设置

为了确保 HttpURLConnection 使用适当的代理,有必要显式提供代理信息。这可以通过构造一个 Proxy 实例并将其传递给 openConnection(proxy) 方法来实现:

//Proxy instance, proxy ip = 10.0.0.1 with port 8080
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.0.0.1", 8080));
conn = new URL(urlString).openConnection(proxy);

验证代理连接

如果代理需要身份验证,则 HttpURLConnection 将响应407 响应代码。要解决此问题,可以按如下方式配置身份验证器:

Authenticator authenticator = new Authenticator() {

    public PasswordAuthentication getPasswordAuthentication() {
        return (new PasswordAuthentication("user",
                "password".toCharArray()));
    }
};
Authenticator.setDefault(authenticator);

以上是如何确保 HttpURLConnection 使用代理并处理身份验证?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn