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

原文地址:https://www.cnblogs.com/rspb/p/4114996.html