zoukankan      html  css  js  c++  java
  • java实现https免证书认证

    java实现https免证书认证

     

    解决方法:

    1.下载两个包,httpclient-4.2.jar和httpcore-4.2.jar,复制以下代码就可使用。

    2.调用类代码:

    String httpOrgCreateTest = "https://url";

       Map<String,Object> createMap = new HashMap<String,Object>();

    createMap.put("name","8888888");

    createMap.put("num","11111");

    createMap.put("array",list.toArray());

        String message = JSON.toJSONString(createMap);

        String result = HttpRequest.sendPost(httpOrgCreateTest, message);

    3.HttpRequest类

    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.PrintWriter;

    import java.net.URL;

    import javax.net.ssl.HttpsURLConnection;

    import javax.net.ssl.SSLContext;

    import javax.net.ssl.SSLSocketFactory;

    import javax.net.ssl.TrustManager;

    public class HttpRequest {

    public static String sendPost(String url, String param) {

    PrintWriter out = null;

    BufferedReader in = null;

    String result = "";

    try {

    // 创建SSLContext对象,并使用我们指定的信任管理器初始化

    TrustManager[] tm = { new MyX509TrustManager() };

    SSLContext sslContext = SSLContext.getInstance("SSL");

    sslContext.init(null, tm, new java.security.SecureRandom());

    // 从上述SSLContext对象中得到SSLSocketFactory对象

    SSLSocketFactory ssf = sslContext.getSocketFactory();

    // 打开和URL之间的连接

    //URL realUrl = new URL(url);

    URL realUrl= new URL(null, url, new sun.net.www.protocol.https.Handler());

    HttpsURLConnection conn = (HttpsURLConnection) realUrl.openConnection();

    conn.setSSLSocketFactory(ssf);

    // 设置通用的请求属性

    conn.setRequestProperty("accept", "*/*");

    conn.setRequestProperty("connection", "Keep-Alive");

    conn.setRequestProperty("content-Type", "application/json");

    conn.setRequestProperty("user-agent",

    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

    // 发送POST请求必须设置如下两行

    conn.setDoOutput(true);

    conn.setDoInput(true);

    // 获取URLConnection对象对应的输出流

    out = new PrintWriter(conn.getOutputStream());

    // 发送请求参数

    out.print(param);

    // flush输出流的缓冲

    out.flush();

    // 定义BufferedReader输入流来读取URL的响应

    in = new BufferedReader(

    new InputStreamReader(conn.getInputStream()));

    String line;

    while ((line = in.readLine()) != null) {

    result += line;

    }

    } catch (Exception e) {

    System.out.println("发送 POST 请求出现异常!"+e);

    e.printStackTrace();

    }

    //使用finally块来关闭输出流、输入流

    finally{

    try{

    if(out!=null){

    out.close();

    }

    if(in!=null){

    in.close();

    }

    }

    catch(IOException ex){

    ex.printStackTrace();

    }

    }

    return result;

    }

    }

    4.MyX509TrustManager类

    import java.security.cert.CertificateException;

    import java.security.cert.X509Certificate;

    import javax.net.ssl.X509TrustManager;

    public class MyX509TrustManager implements X509TrustManager{

    @Override

    public void checkClientTrusted(X509Certificate[] chain, String authType) throws

    CertificateException {

    }

    @Override

    public void checkServerTrusted(X509Certificate[] chain, String authType) throws

    CertificateException {

    }

    @Override

    public X509Certificate[] getAcceptedIssuers() {

    return null;

    }

    }

  • 相关阅读:
    深度学习学习总结
    线性回归学习总结
    机器学习常用算法总结
    2020年,给自己立个flag
    与博客添网易云外钟墯之坑
    给博客添加网易云外链时掉的坑
    BEGINNING
    【华为云技术分享】程序员真香定律:源码即设计
    【华为云技术分享】【DevCloud · 敏捷智库】如何利用核心概念解决估算常见问题
    差点被祭天!狂欢618,且看研发人如何绝地求生
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10188499.html
Copyright © 2011-2022 走看看