/** * 發送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(); } }