在Java程序中使用HTTP代理

作者: Seayon阿阳 分类: Java 发布时间: 2017-09-28 01:52

在需要发送HTTP请求的Java程序中,有时候需要通过HTTP代理(非Java反射代理机制)来访问目标网络地址,最常见的需求就是需要抓包自己分析程序发出的数据和服务器返回的数据,一般来讲有以下两种方式:

第一种直接修改系统属性,建议本地调试时使用,用完记得注释或删除关闭,不然在程序上线或代理关闭后将抛出异常:

System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8888");
System.setProperty("https.proxyPort", "8888");

第二种,在使用OkHttpClient或其他诸如URLConnection 或HttpClient对象发送请求是,使用Proxy对象来实现,这里以OkHttpClient为例,仅对当前的OkHttpClient有效:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("IP地址", 端口号));
OkHttpClient.Builder builder = new OkHttpClient.Builder().proxy(proxy);
OkHttpClient otc = builder.build();