美文网首页
java对简单的http请求忽略证书问题

java对简单的http请求忽略证书问题

作者: 小黄龙V5 | 来源:发表于2021-01-18 23:44 被阅读0次
public static String doJsonPostAsHeader(String urlPath, String Json,Map<String,String> headerMap) {
        logger.info("HttpClientUtil 请求地址===========URL》:  " + urlPath);
        logger.info("HttpClientUtil 请求参数===========》》》:  " + Json);
        // HttpClient 6.0被抛弃了
        String result = "";
        BufferedReader reader = null;
        try {
//start
            TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
                @Override
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                @Override
                public void checkClientTrusted(X509Certificate[] certs, String authType) {
                }
                @Override
                public void checkServerTrusted(X509Certificate[] certs, String authType) {
                }
            }
            };
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
            HostnameVerifier allHostsValid = new HostnameVerifier(){
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }

            };
            HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
//            URL url = new URL(https_url);
            URL url = new URL(urlPath);
            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
//            HttpsURLConnection  conn = (HttpsURLConnection)url.openConnection();
            SSLSocketFactory sslSocketFactory = sc.getSocketFactory();
            conn.setSSLSocketFactory(sslSocketFactory);


//end
//            URL url = new URL(urlPath);
//            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.setRequestProperty("Charset", "UTF-8");
            // 设置文件类型:
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            // 设置接收类型否则返回415错误
            //conn.setRequestProperty("accept","*/*")此处为暴力方法设置接受所有类型,以此来防范返回415;
            conn.setRequestProperty("accept", "application/json");
            for (String key : headerMap.keySet()) {
                conn.setRequestProperty(key, headerMap.get(key).toString());
            }
            // 往服务器里面发送数据
            if (Json != null && !TextUtils.isEmpty(Json)) {
                byte[] writebytes = Json.getBytes();
                // 设置文件长度
                conn.setRequestProperty("Content-Length", String.valueOf(writebytes.length));
                OutputStream outwritestream = conn.getOutputStream();
                outwritestream.write(Json.getBytes());
                outwritestream.flush();
                outwritestream.close();
            }
            if (conn.getResponseCode() == 200) {
                reader = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));
                result = reader.readLine();
            }
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    logger.error(e.getMessage(), e);
                }
            }
        }
        logger.info("HttpClientUtil JSON返回参数===========》》》:" + result);
        return result;
    }

相关文章

网友评论

      本文标题:java对简单的http请求忽略证书问题

      本文链接:https://www.haomeiwen.com/subject/srbfzktx.html