一、直接设置系统属性,设置后所有网络请求都有效

            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)相关推荐

  1. spring中AOP动态代理的两种方式

    AOP动态代理的两种方式 Spring AOP动态代理的方式(spring的AOP默认是JDK Proxy) 浅谈这两种动态代理 JDK的动态代理,需要有实现接口 动态代理--JDK Proxy ⚫ ...

  2. Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理

    Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理 代理模式 JDK动态代理 CGLIB动态代理 代理模式 代理模式是23种设计模式的一种,指一个对象A通过持有另一个对象B,可以具有B ...

  3. 创建和应用Java包文件的两种方式(转)

    创建和应用Java包文件的两种方式(转) <Java编程艺术>章节选登.作者:高永强 清华大学出版社 (即将出版) 12.1  包--package    ... 12.1.1  包命名规 ...

  4. java操作Excel有两种方式 方式1:jxl操作Excel jxl的API

    java操作Excel有两种方式 方式1:jxl操作Excel 方式2:poi操作Excel 下面介绍jxl API: 使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用 ...

  5. java制作oracle程序,Java程序操作Oracle两种方式之简单实现

    Java程序操作Oracle两种方式之简单实现 1.通过JDBC-ODBC桥连接Oracle数据库 (1)创建odbc源,在控制面板->管理工具->数据源(odbc)中添加DSN,比如取名 ...

  6. Java 实现抽奖的两种方式

    Java实现抽奖的两种方式 方式一:随机数在哪个区间内返回区间下标 方式二:随机数加入区间点集合排序返回随机数下标 代码示例: ①抽奖入参类型为BigDecimal: package com.cfay ...

  7. Java格式化倒计时的两种方式

    Java格式化倒计时的两种方式 第一种方式 /*** 入参是一个每秒减小1的秒数* 返回一个格式化的时间* * 该方法具有局限性,他在时间大于1个小时的时候,会返回错误的时间* 因为该方法调用了Dat ...

  8. java 产生随机数的两种方式,Java产生随机数的两种方式

    Java产生随机数的两种方式 Java产生随机数的两种方式 在java中,我们可以通过两种方式来获取随机数(generating a random number)一种是大家熟悉的java.lang.M ...

  9. Java读取证书的两种方式

    关于证书基础以及创建.查看.删除.导入.导出以及其他功能详解请参照:Java使用keytool创建CA证书 Java读取证书有两种方式 1.从文件中读取 public static void main ...

最新文章

  1. cuda error invalid argument
  2. 深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
  3. 织梦熊掌号插件兼容php5.3,DedeCMS百度熊掌号推送插件下载
  4. 图片压缩大小java_压缩图片大小(Java源码)
  5. 学习react心得及总结
  6. python基本数据类型包括哪些_python入门3——基本数据类型
  7. 如何写一个bootloader
  8. Android应用程序结构总结
  9. 【JAVA基础篇】final、finally和finalize
  10. Python数据分析学习笔记:计算相关系数
  11. 安装glog和gflags
  12. vue中的provide/inject的学习使用
  13. 使用cronolog-1.6.2按日期截取Tomcat日志
  14. python进不去怎么办_python写文件有时候写不进去怎么办
  15. git删除远程库文件
  16. [网络安全自学篇] 二十一.GeekPwn 2019极客大赛之安全攻防技术总结及ShowTime
  17. laravel完全安装手册
  18. xp系统显示无打印机服务器,Xp系统显示“Windows无法打开添加打印机”的处理方法...
  19. 2.《THE WISDOM OF LIFE》_叔本华
  20. Cesium专栏-空间分析之坡向分析(附源码下载)

热门文章

  1. 常见的块元素 行内元素 行内块元素
  2. 在linux终端下使用scp与远程windows传输文件
  3. UNIX 是什么?怎么诞生的?
  4. Debian11安装mysql5.7
  5. 冯诺依曼结构与哈佛结构的区别
  6. LTE-M通信系统传输建模与可用性分析
  7. Scipy-kmeans聚类
  8. python面试自我介绍_python自我描述
  9. clear 和evict
  10. 超详细Redis入门教程——Redis 的安装与配置