HttpClients https请求

1、获取发送https请求的httpClient客户端

public class SSLClient {

    public static CloseableHttpClient getClient(byte[] cert, String pass, String certType) throws Exception{
        KeyStore keyStore  =KeyStore.getInstance(certType);
        KeyManager[] keyManagers = null;
        try(ByteArrayInputStream bis = new ByteArrayInputStream(cert)){
            keyStore.load(bis,pass.toCharArray());
            KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("sunX509");
            keyManagerFactory.init(keyStore, pass.toCharArray());
            keyManagers = keyManagerFactory.getKeyManagers();
        }
        SSLContext sc = SSLContext.getInstance("TLS");
        TrustManager[] trustManagerArray = {new 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 new X509Certificate[0];
            }
            
        }};
        sc.init(keyManagers, trustManagerArray, null);
        return HttpClientBuilder.create().setSSLHostnameVerifier(new NoCheckHttpsHostnameVerifier()).setSSLContext(sc).build();
    }
}

2、拼接请求参数,发送请求

CloseableHttpResponse response = null;
        try {
            HttpPost post = new HttpPost(url.toString());
            
            //拼接请求参数
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();  
            builder.addTextBody(Constants.SignKey.INS_SECRET_ACCESS,instance.getId(), ContentType.TEXT_PLAIN.withCharset("UTF-8"));
            JSONObject logObj = new JSONObject(); 

            if (parameters!= null && !parameters.isEmpty()) {
                String[] sortedKeys = parameters.keySet().toArray(new String[] {});
                Arrays.sort(sortedKeys);
                for (String key : sortedKeys) {
                    Object value = parameters.get(key);
                    if(!(value instanceof byte[])){
                        ASAPI.getLogger(SignUtils.class).debug("REQPARAMETER——————"+key+":"+value);
                        builder.addTextBody(key, (String) value, ContentType.TEXT_PLAIN.withCharset("UTF-8"));
                        logObj.put(key, value);
                    }else{
                        //文件流
                        WebApplicationContext webApplicationContext = ContextLoader
                                .getCurrentWebApplicationContext();
                        ServletContext servletContext = webApplicationContext
                                .getServletContext();
                        // 得到文件绝对路径
                        String basePath = servletContext.getRealPath("/");
                        String tempRoot = basePath+"temp";
                        //清理临时文件
                        FileUtils.clearTempFile(tempRoot);
                        File temp = new File(tempRoot+File.separator+IdGenerator.getShortUUID("temp"));
                        IOUtils.write((byte[]) value, new FileOutputStream(temp));
                        ASAPI.getLogger(SignUtils.class).debug("REQPARAMETER——————"+key+":"+"*********");
                        builder.addBinaryBody(key,temp);
                        logObj.put(key, "*****");
                    }
                }
            }
            //param.add(new BasicNameValuePair(Constants.SignKey.INS_SIGNATURE, signature));
            post.setEntity(builder.build());
            post.setConfig(requestConfig);
            ASAPI.getLogger(SignUtils.class).debug("request for="+instance.getHost()+":"+instance.getPort()+"开始执行POST请求,请求参数======="+logObj.toJSONString());
            response = client.execute(post);
            parameters.remove("aarFiles");
            ASAPI.getLogger(SignUtils.class).info(parameters+"POST请求结束,请求参数======="+logObj.toJSONString());
            //处理返回结果    
            setResponseString(response,resultBean,clazz);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值