httpclent 访问https 忽略host检查 和一些 认证过程

来源:互联网 发布:matlab中选择子矩阵 编辑:程序博客网 时间:2024/06/07 16:09
http  4.3以前的 HttpClient httpClient =httpClient1;        // 创建TrustManager    X509TrustManager xtm = new 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[] {};      }    };    try {      SSLContext ctx = SSLContext.getInstance("SSL");            // 使用TrustManager来初始化该上下文,TrustManager只是被SSL的Socket所使用      ctx.init(null, new TrustManager[] { xtm }, null);            SSLSocketFactory sf = new SSLSocketFactory(          ctx,          SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);      Scheme sch = new Scheme("https", 443, sf);      httpClient.getConnectionManager().getSchemeRegistry().register(sch);      // 创建HttpPost      HttpGet httpPost = new HttpGet(url);       httpPost.setHeader("content-type", contextType);      // 执行POST请求      HttpResponse response = httpClient.execute(httpPost);       // 获取响应实体      HttpEntity entity = response.getEntity();       bs = IOUtils.toByteArray(entity.getContent());       if (null != entity) {          EntityUtils.consume(entity); // Consume response content        }      return bs;    } catch (Exception e) {      e.printStackTrace();    } finally {      // 关闭连接,释放资源//httpClient.getConnectionManager().shutdown();     }    return bs;  }==========================================================================================================4.3以后SSLContext sslContext;        try {            sslContext = new SSLContextBuilder().loadTrustMaterial(null,                    new TrustStrategy() {                        // 信任所有                    public boolean isTrusted(X509Certificate[] chain,                            String authType) throws CertificateException {                        return true;                    }                }).build();        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(                sslContext,                SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);        httpclient = HttpClients.custom()                .setSSLSocketFactory(sslsf).build();        HttpPost httpPost = new HttpPost(httpAddr2);        //httpclient构建完成  构造请求参数        List<NameValuePair> formparams = new ArrayList<NameValuePair>();        formparams.add(new BasicNameValuePair("SENDER_CODE", spid));        formparams.add(new BasicNameValuePair("TRX_CONTENT", base64Str));        formparams.add(new BasicNameValuePair("SIGNATURE", md5Str));        UrlEncodedFormEntity uefEntity;        uefEntity = new UrlEncodedFormEntity(formparams);        httpPost.setEntity(uefEntity);        CloseableHttpResponse response = httpclient.execute(httpPost);        HttpEntity entity = response.getEntity();
0 0
原创粉丝点击