1 新建java類,作用是繞過證書用
package cn.smartercampus.core.util;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
public class MyX509TrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
2 https post請求
package cn.smartercampus.core.util; import javax.net.ssl.*; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.security.cert.X509Certificate; import java.util.HashMap; import java.util.Map; public class HttpsPostUtil { //添加主機名驗證程序類,設置不驗證主機 private final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; //添加信任主機 private static void trustAllHosts() { // 創建不驗證證書鏈的信任管理器 這里使用的是x509證書 TrustManager[] trustAllCerts = new TrustManager[]{new MyX509TrustManager() { 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) { } }}; // 安裝所有信任的信任管理器 try { SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); //HttpsURLConnection通過SSLSocket來建立與HTTPS的安全連接,SSLSocket對象是由SSLSocketFactory生成的。 HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception e) { e.printStackTrace(); } } /** * 發送post 數據 * @param urls * @return */ public static String heart(String urls, String param, String contentType, String method) { StringBuffer sb=new StringBuffer(); DataOutputStream out = null; BufferedReader responseReader = null; InputStream in1 = null; try { trustAllHosts(); // 創建url資源 URL url = new URL(urls); // 建立http連接 HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setHostnameVerifier(DO_NOT_VERIFY); // 設置不用緩存 conn.setUseCaches(false); // 設置允許輸出 conn.setDoOutput(true); // 設置允許輸入 conn.setDoInput(true); // 設置傳遞方式 conn.setRequestMethod(method); //System.out.println(conn.getRequestMethod()); // 設置維持長連接 conn.setRequestProperty("Connection", "Keep-Alive"); // 設置文件字符集: conn.setRequestProperty("Charset", "UTF-8"); // 轉換為字節數組 // byte[] data = (param).getBytes(); // // 設置文件長度 // conn.setRequestProperty("Content-Length", String.valueOf(data.length)); // 設置文件類型: conn.setRequestProperty("Content-Type", contentType); conn.setRequestProperty("Authorization", param); // 開始連接請求 conn.connect(); out = new DataOutputStream(conn.getOutputStream()); // 寫入請求的字符串 out.writeBytes(param); out.flush(); //System.out.println(conn.getResponseCode()); // 請求返回的狀態 if (HttpURLConnection.HTTP_OK == conn.getResponseCode()) { System.out.println("連接成功"); // 請求返回的數據 in1 = conn.getInputStream(); String readLine; responseReader = new BufferedReader(new InputStreamReader(in1)); while((readLine=responseReader.readLine()) != null){ sb.append(readLine).append("\n"); } } else { System.out.println("error++"); } } catch (Exception e) { } finally { try { if (null != responseReader) responseReader.close(); if (null != in1) in1.close(); } catch(Exception e) {} try { out.close(); } catch(Exception e) {} } return sb.toString(); } /** * 發送post 數據 * @param urls * @return */ public static String sendPost(String urls, String param, String contentType, String method) { StringBuffer sb=new StringBuffer(); DataOutputStream out = null; BufferedReader responseReader = null; InputStream in1 = null; try { trustAllHosts(); // 創建url資源 URL url = new URL(urls); // 建立http連接 HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setHostnameVerifier(DO_NOT_VERIFY); // 設置不用緩存 conn.setUseCaches(false); // 設置允許輸出 conn.setDoOutput(true); // 設置允許輸入 conn.setDoInput(true); // 設置傳遞方式 conn.setRequestMethod(method); //System.out.println(conn.getRequestMethod()); // 設置維持長連接 conn.setRequestProperty("Connection", "Keep-Alive"); // 設置文件字符集: conn.setRequestProperty("Charset", "UTF-8"); // 轉換為字節數組 // byte[] data = (param).getBytes(); // // 設置文件長度 // conn.setRequestProperty("Content-Length", String.valueOf(data.length)); // 設置文件類型: conn.setRequestProperty("Content-Type", contentType); // 開始連接請求 conn.connect(); out = new DataOutputStream(conn.getOutputStream()); // 寫入請求的字符串 out.writeBytes(param); out.flush(); //System.out.println(conn.getResponseCode()); // 請求返回的狀態 if (HttpURLConnection.HTTP_OK == conn.getResponseCode()) { System.out.println("連接成功"); // 請求返回的數據 in1 = conn.getInputStream(); String readLine; responseReader = new BufferedReader(new InputStreamReader(in1)); while((readLine=responseReader.readLine()) != null){ sb.append(readLine).append("\n"); } } else { System.out.println("error++"); } } catch (Exception e) { } finally { try { if (null != responseReader) responseReader.close(); if (null != in1) in1.close(); } catch(Exception e) {} try { out.close(); } catch(Exception e) {} } return sb.toString(); } /** * map轉url參數 */ public static String map2Url(Map<String, String> paramToMap) { if (null == paramToMap || paramToMap.isEmpty()) { return null; } StringBuffer url = new StringBuffer(); boolean isfist = true; for (Map.Entry<String, String> entry : paramToMap.entrySet()) { if (isfist) { isfist = false; } else { url.append("&"); } url.append(entry.getKey()).append("="); String value = entry.getValue(); if (!StringUtils.isEmpty(value)) { url.append(value); } } return url.toString(); } public static void main(String[] args) { System.out.println("123"); Map<String, String> params = new HashMap<String, String>(); params.put("client_id", "xx.cn"); params.put("client_secret", "UY83SNFJWLU32NJSLJIK"); params.put("code", "40ce7f41d6562e47dbdc33593ddce1b46444cdb93514b3aaced7be90eb51a16f"); params.put("grant_type", "authorization_code"); params.put("redirect_uri", "xxn/index.jsp"); //要發送的POST請求url?Key=Value&Key2=Value2&Key3=Value3的形式 //application/json;charset=UTF-8 application/x-www-form-urlencoded;charset=UTF-8 String sb = sendPost("https://id.pdedu.sh.cn/connect/token",map2Url(params),"application/x-www-form-urlencoded;charset=UTF-8","POST"); //System.out.println(sb); } }
