在Java中,可以使用多种方法实现网络代理。这里,我将向您展示如何使用Java的原生java.net.Proxy
类和第三方库ProxySelector
来实现网络代理。
方法1:使用java.net.Proxy类
import java.io.IOException; import java.net.*; public class ProxyExample { public static void main(String[] args) { // 设置代理服务器的主机名和端口 String proxyHost = "proxy.example.com"; int proxyPort = 8080; // 创建一个代理对象 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)); // 创建一个URL对象,指定目标URL URL url = new URL("http://www.example.com"); // 使用代理对象创建一个URLConnection URLConnection connection = url.openConnection(proxy); // 设置请求属性(可选) connection.setRequestProperty("User-Agent", "Mozilla/5.0"); // 读取目标URL的内容 try (InputStream inputStream = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
方法2:使用ProxySelector类
首先,您需要添加java.net.ProxySelector
的依赖。如果您使用Maven,可以在pom.xml
文件中添加以下依赖:
org.apache.commons commons-net 3.8.0
然后,您可以使用以下代码实现网络代理:
import java.io.IOException; import java.net.*; import java.util.List; public class ProxySelectorExample { public static void main(String[] args) { // 设置代理服务器的主机名和端口 String proxyHost = "proxy.example.com"; int proxyPort = 8080; // 创建一个ProxySelector对象 ProxySelector proxySelector = new ProxySelector() { @Override public Listselect(URI uri) { return List.of(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort))); } }; // 创建一个URL对象,指定目标URL URL url = new URL("http://www.example.com"); // 使用ProxySelector选择代理 List proxies = proxySelector.select(url.toURI()); // 遍历代理列表并尝试连接 for (Proxy proxy : proxies) { try { // 使用代理对象创建一个URLConnection URLConnection connection = url.openConnection(proxy); // 设置请求属性(可选) connection.setRequestProperty("User-Agent", "Mozilla/5.0"); // 读取目标URL的内容 try (InputStream inputStream = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } break; // 连接成功,退出循环 } catch (IOException e) { System.err.println("Failed to connect through proxy: " + proxy); } } } }
以上代码展示了如何使用Java的java.net.Proxy
类和ProxySelector
类实现网络代理。您可以根据自己的需求选择合适的方法。