乐闻世界logo
搜索文章和话题

How do I make HttpURLConnection use a proxy?

1 个月前提问
1 个月前修改
浏览次数12

1个答案

1

在Java中,HttpURLConnection 类用于发送和接收数据,通常是发送HTTP请求和接收HTTP响应。当你需要通过代理服务器发送请求时,可以通过几种方式配置HttpURLConnection来使用代理。

1. 使用Proxy类配置代理

最直接的方法是在创建HttpURLConnection实例时使用Proxy类。这里是一个具体的例子:

java
import java.net.*; public class ProxyExample { public static void main(String[] args) { try { URL url = new URL("http://example.com"); // 创建代理服务器的地址和端口 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("代理服务器地址", 代理服务器端口)); // 打开连接,通过代理 HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy); // 设置请求方式、超时时间等 connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); // 发送请求并获取响应码 int responseCode = connection.getResponseCode(); System.out.println("Response Code : " + responseCode); connection.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }

在这个例子中,我们首先构建了Proxy对象,它需要Proxy.TypeInetSocketAddress(代理的IP地址和端口)。然后我们用这个代理对象创建HttpURLConnection

2. 使用系统属性配置全局代理

如果你想要为所有的HTTP连接设置相同的代理,可以通过设置系统属性来实现。这种方法适用于所有在应用程序中创建的HttpURLConnection实例。

java
public class GlobalProxyExample { public static void main(String[] args) { try { // 设置全局代理 System.setProperty("http.proxyHost", "代理服务器地址"); System.setProperty("http.proxyPort", "代理服务器端口"); URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置请求方式、超时时间等 connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); // 发送请求并获取响应码 int responseCode = connection.getResponseCode(); System.out.println("Response Code : " + responseCode); connection.disconnect(); } catch (Exception e) { e.printStackTrace(); } } }

在这个例子中,我们使用System.setProperty方法设置了代理的服务器地址和端口,这将影响所有的HttpURLConnection实例。

结论

选择哪种方式取决于你的具体需求。如果只有部分请求需要通过代理,使用Proxy类是个不错的选择。如果你希望应用程序中所有的HTTP请求都通过相同的代理,设置系统属性可能更方便。

2024年8月5日 01:15 回复

你的答案