zoukankan      html  css  js  c++  java
  • 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(); } }
  • 相关阅读:
    A
    hdu 2108 Shape of HDU(判定是不是凸多边形)
    F
    J
    扩展欧几里得
    G
    A
    D
    E
    H
  • 原文地址:https://www.cnblogs.com/yizw/p/13673216.html
Copyright © 2011-2022 走看看