java發送https忽略證書


 

 /**
     * 發送post請求
     * @param urlStr
     * @param param
     * @return
     */
    public static String doPostReq(String urlStr,String param){
        String result = "";
        BufferedReader bufferedReader = null;
        InputStream inputStream = null;
        try {
            trustAllHosts();
            URL url = new URL(urlStr);
            //HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            HttpURLConnection conn = null;
            // 通過請求地址判斷請求類型(http或者是https)
            if (url.getProtocol().toLowerCase().equals("https")) {
                HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
                https.setHostnameVerifier(DO_NOT_VERIFY);
                conn = https;
            } else {
                conn = (HttpURLConnection) url.openConnection();
            }
            conn.setRequestMethod("POST");//設置請求方式
            conn.setConnectTimeout(15000);//設置連接超時時間
            conn.setReadTimeout(60000);//設置讀取遠程超時時間
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setRequestProperty("Content-type","application/json; charset=utf-8");
            conn.setRequestProperty("Accept",
                    "text/xml,text/javascript,text/html,application/json");
            OutputStream outputStream = conn.getOutputStream();//通過連接對象獲取輸出流
            outputStream.write(param.getBytes());//通過輸出流對象將參數傳輸出去,它是通過字節數組寫出去的
            System.out.println("respCode:"+conn.getResponseCode());
            if (conn.getResponseCode() == 200){
                inputStream = conn.getInputStream();
                ByteArrayOutputStream baos=new ByteArrayOutputStream();
                byte[] buf = new byte[1024];
                int len = 0;
                while((len=inputStream.read(buf))!=-1){
                    baos.write(buf, 0, len);
                }
                baos.flush();
                result = baos.toString();
            }
       //如果響應碼是307則重新發起請求 if(307 == conn.getResponseCode()) { String redirectUrl = conn.getHeaderField("Location"); if(redirectUrl != null && !redirectUrl.isEmpty()) { urlStr = redirectUrl; return doPostReq(urlStr,param); } } }catch (Exception e){ e.printStackTrace(); }finally { try { if (null != bufferedReader){ bufferedReader.close(); } if (null != inputStream){ inputStream.close(); } }catch (IOException e){ e.printStackTrace(); } } return result; } private final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; private static void trustAllHosts() { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[] {}; } public void checkClientTrusted(X509Certificate[] chain, String authType) { } public void checkServerTrusted(X509Certificate[] chain, String authType) { } } }; // Install the all-trusting trust manager try { SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception e) { e.printStackTrace(); } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM