zoukankan      html  css  js  c++  java
  • java https client信任所有证书

    package httpsclient;

    import java.io.IOException;
    import java.util.List;
    import java.util.ArrayList;


    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.ResponseHandler;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    import org.apache.http.client.entity.EntityBuilder;
    import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
    import java.security.KeyStore;  
    import iF.*;

    import javax.net.ssl.SSLContext;
    import org.apache.http.conn.ssl.SSLContexts;  
    import org.apache.http.conn.ssl.TrustSelfSignedStrategy;

    import com.google.gson.Gson;


    public class MyHttp {
        public static void main(String[] args) throws Exception{
            
    //        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
    //        SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore, new TrustSelfSignedStrategy()).build();
    //        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            SSLContext sslcontext = SSLContext.getInstance("SSLv3");  //建立证书实体    
            javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
            javax.net.ssl.TrustManager tm = new miTM();
            trustAllCerts[0] = tm;
            sslcontext.init(null, trustAllCerts, null);
            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
        
            
            try{
                String url = "https://127.0.0.1:8787/";
                
               
                HttpPost httppost = new HttpPost(url);
                Gson gson = new Gson();
                EntityBuilder entitybuilder = EntityBuilder.create();
    //            GetLiveListReq req = new GetLiveListReq();
    //            req.setMsgType("GetLiveList");
    //            req.setNum(1);
    //            req.setStart(1);
    //            req.setSessionId("1001");
                LoginReq req = new LoginReq();
                req.setMsgType("Login");
                req.setUserName("11");
                entitybuilder.setText(gson.toJson(req));
                httppost.setEntity(entitybuilder.build());
                
                System.out.println("executing request " + httppost.getURI());
                
                ResponseHandler<String> responseHandler = new ResponseHandler<String>(){
                    public String handleResponse(final HttpResponse response) throws ClientProtocolException,IOException{
                        int status = response.getStatusLine().getStatusCode();
                        if (status >= 200 && status < 400){
                            System.out.println("Send success");
                            HttpEntity entity = response.getEntity();
                            return entity !=null ? EntityUtils.toString(entity) : null;
                        }else{
                            throw new ClientProtocolException("Unexpected response status: " + status);
                        }
                    }
                };
                String responseBody = httpclient.execute(httppost,responseHandler);
                System.out.println("-------------------------------------------");
                System.out.println(responseBody);
                System.out.println("-------------------------------------------");
            }finally{
                httpclient.close();
            }
        }
        
        
        static class miTM implements javax.net.ssl.TrustManager,
        javax.net.ssl.X509TrustManager {
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            public boolean isServerTrusted(
                    java.security.cert.X509Certificate[] certs) {
                return true;
            }

            public boolean isClientTrusted(
                    java.security.cert.X509Certificate[] certs) {
                return true;
            }

            public void checkServerTrusted(
                    java.security.cert.X509Certificate[] certs, String authType)
                            throws java.security.cert.CertificateException {
                return;
            }

            public void checkClientTrusted(
                    java.security.cert.X509Certificate[] certs, String authType)
                            throws java.security.cert.CertificateException {
                return;
            }
        }
        
    }

  • 相关阅读:
    Intersection Observer 观察元素何时进入或退出浏览器的视口
    JS防抖函数、节流函数工具类封装
    页面刷新时,如何保持原有vuex中的state信息
    vue具名插槽、作用域插槽的新写法
    vue-cli3+工具中,配置路径别名(vue.config.js)
    基于Vue-SSR优化方案归纳总结
    React组件设计:重新认识受控与非受控组件
    如何用 JavaScript 实现一个数组惰性求值库
    原生 js 中应该禁止出现的写法,以提高代码效率和安全性
    Javascript 实践中的命令模式
  • 原文地址:https://www.cnblogs.com/rspb/p/4114996.html
Copyright © 2011-2022 走看看