• 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;

    }

    }

  • 相关阅读:
    使用Wireshark捕捉USB通信数据
    simtrace之探秘SIM卡中的世界
    极客DIY:RFID飞贼打造一款远距离渗透利器
    C118+Osmocom-bb+Openbts搭建小型基站
    天猫标的就是虚价,果然败家节啊
    为什么项目的jar包会和tomcat的jar包冲突?
    Spring-JDBC实现Contact的CRUD
    使用maven下载jar包的source和javadoc
    Spring-Context的注解实现依赖注入功能
    [html]三列居中自动伸缩的结构
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10188499.html
Copyright © 2020-2023  润新知