JAVA设置代理的两种方式(HTTP和HTTPS)
一、直接设置系统属性,设置后所有网络请求都有效
System.setProperty("proxyType", "4");System.setProperty("proxyPort", "80"));System.setProperty("proxyHost", "127.0.0.1");System.setProperty("proxySet", "true");
二、用用java.net.Proxy类
package test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.net.Proxy.Type;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;public class HttpAndHttpsProxy {public static String HttpsProxy(String url, String param, String proxy, int port) {HttpsURLConnection httpsConn = null;PrintWriter out = null;BufferedReader in = null;String result = "";BufferedReader reader = null;try {URL urlClient = new URL(url);System.out.println("请求的URL========:" + urlClient);SSLContext sc = SSLContext.getInstance("SSL");// 指定信任httpssc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());//创建代理虽然是https也是Type.HTTPProxy proxy1=new Proxy(Type.HTTP, new InetSocketAddress(proxy, port));//设置代理httpsConn = (HttpsURLConnection) urlClient.openConnection(proxy1);httpsConn.setSSLSocketFactory(sc.getSocketFactory());httpsConn.setHostnameVerifier(new TrustAnyHostnameVerifier());// 设置通用的请求属性httpsConn.setRequestProperty("accept", "*/*");httpsConn.setRequestProperty("connection", "Keep-Alive");httpsConn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行httpsConn.setDoOutput(true);httpsConn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(httpsConn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(httpsConn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}// 断开连接httpsConn.disconnect();System.out.println("====result===="+result);System.out.println("返回结果:" + httpsConn.getResponseMessage());} catch (Exception e) {e.printStackTrace();} finally {try {if (reader != null) {reader.close();}} catch (IOException e) {}try {if (in != null) {in.close();}} catch (IOException e) {e.printStackTrace();}if (out != null) {out.close();}}return result;}public static String HttpProxy(String url, String param, String proxy, int port) {HttpURLConnection httpConn = null;PrintWriter out = null;BufferedReader in = null;String result = "";BufferedReader reader = null;try {URL urlClient = new URL(url);System.out.println("请求的URL========:" + urlClient);//创建代理Proxy proxy1=new Proxy(Type.HTTP, new InetSocketAddress(proxy, port));//设置代理httpConn = (HttpURLConnection) urlClient.openConnection(proxy1);// 设置通用的请求属性httpConn.setRequestProperty("accept", "*/*");httpConn.setRequestProperty("connection", "Keep-Alive");httpConn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行httpConn.setDoOutput(true);httpConn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(httpConn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(httpConn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}// 断开连接httpConn.disconnect();System.out.println("====result===="+result);System.out.println("返回结果:" + httpConn.getResponseMessage());} catch (Exception e) {e.printStackTrace();} finally {try {if (reader != null) {reader.close();}} catch (IOException e) {}try {if (in != null) {in.close();}} catch (IOException e) {e.printStackTrace();}if (out != null) {out.close();}}return result;}private static class TrustAnyTrustManager implements X509TrustManager {public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[] {};}}private static class TrustAnyHostnameVerifier implements HostnameVerifier {public boolean verify(String hostname, SSLSession session) {return true;}}public static void main(String[] args) {HttpsProxy("https://www.baidu.com//", "", "127.0.0.1", 81);HttpProxy("http://www.aseoe.com/", "", "127.0.0.1", 81);}}
JAVA设置代理的两种方式(HTTP和HTTPS)相关推荐
- spring中AOP动态代理的两种方式
AOP动态代理的两种方式 Spring AOP动态代理的方式(spring的AOP默认是JDK Proxy) 浅谈这两种动态代理 JDK的动态代理,需要有实现接口 动态代理--JDK Proxy ⚫ ...
- Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理
Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理 代理模式 JDK动态代理 CGLIB动态代理 代理模式 代理模式是23种设计模式的一种,指一个对象A通过持有另一个对象B,可以具有B ...
- 创建和应用Java包文件的两种方式(转)
创建和应用Java包文件的两种方式(转) <Java编程艺术>章节选登.作者:高永强 清华大学出版社 (即将出版) 12.1 包--package ... 12.1.1 包命名规 ...
- java操作Excel有两种方式 方式1:jxl操作Excel jxl的API
java操作Excel有两种方式 方式1:jxl操作Excel 方式2:poi操作Excel 下面介绍jxl API: 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用 ...
- java制作oracle程序,Java程序操作Oracle两种方式之简单实现
Java程序操作Oracle两种方式之简单实现 1.通过JDBC-ODBC桥连接Oracle数据库 (1)创建odbc源,在控制面板->管理工具->数据源(odbc)中添加DSN,比如取名 ...
- Java 实现抽奖的两种方式
Java实现抽奖的两种方式 方式一:随机数在哪个区间内返回区间下标 方式二:随机数加入区间点集合排序返回随机数下标 代码示例: ①抽奖入参类型为BigDecimal: package com.cfay ...
- Java格式化倒计时的两种方式
Java格式化倒计时的两种方式 第一种方式 /*** 入参是一个每秒减小1的秒数* 返回一个格式化的时间* * 该方法具有局限性,他在时间大于1个小时的时候,会返回错误的时间* 因为该方法调用了Dat ...
- java 产生随机数的两种方式,Java产生随机数的两种方式
Java产生随机数的两种方式 Java产生随机数的两种方式 在java中,我们可以通过两种方式来获取随机数(generating a random number)一种是大家熟悉的java.lang.M ...
- Java读取证书的两种方式
关于证书基础以及创建.查看.删除.导入.导出以及其他功能详解请参照:Java使用keytool创建CA证书 Java读取证书有两种方式 1.从文件中读取 public static void main ...
最新文章
- cuda error invalid argument
- 深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
- 织梦熊掌号插件兼容php5.3,DedeCMS百度熊掌号推送插件下载
- 图片压缩大小java_压缩图片大小(Java源码)
- 学习react心得及总结
- python基本数据类型包括哪些_python入门3——基本数据类型
- 如何写一个bootloader
- Android应用程序结构总结
- 【JAVA基础篇】final、finally和finalize
- Python数据分析学习笔记:计算相关系数
- 安装glog和gflags
- vue中的provide/inject的学习使用
- 使用cronolog-1.6.2按日期截取Tomcat日志
- python进不去怎么办_python写文件有时候写不进去怎么办
- git删除远程库文件
- [网络安全自学篇] 二十一.GeekPwn 2019极客大赛之安全攻防技术总结及ShowTime
- laravel完全安装手册
- xp系统显示无打印机服务器,Xp系统显示“Windows无法打开添加打印机”的处理方法...
- 2.《THE WISDOM OF LIFE》_叔本华
- Cesium专栏-空间分析之坡向分析(附源码下载)