使用java發送https的請求
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.security.cert.CertificateException; import java.util.Map;import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.security.cert.X509Certificate;
public class HttpsGetData { private static class TrustAnyTrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[] {}; } } private static class TrustAnyHostnameVerifier implements HostnameVerifier { public boolean verify(String hostname, SSLSession session) { return true; } } String _url=""; Map<String,String> _params; public HttpsGetData(String url,Map<String,String> keyValueParams) { this._url=url; this._params=keyValueParams; } public String Do() throws Exception { String result = ""; BufferedReader in = null; try { String urlStr = this._url + "&" + getParamStr(); System.out.println("GET請求的URL為:"+urlStr); SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom()); URL realUrl = new URL(urlStr); // 打開和URL之間的連接 HttpsURLConnection connection = (HttpsURLConnection) realUrl.openConnection(); //設置https相關屬性 connection.setSSLSocketFactory(sc.getSocketFactory()); connection.setHostnameVerifier(new TrustAnyHostnameVerifier()); connection.setDoOutput(true); // 設置通用的請求屬性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立實際的連接 connection.connect(); // 定義 BufferedReader輸入流來讀取URL的響應 in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8")); String line; while ((line = in.readLine()) != null) { result += line; } System.out.println("獲取的結果為:"+result); } catch (Exception e) { System.out.println("發送GET請求出現異常!" + e); //e.printStackTrace(); throw e; } // 使用finally塊來關閉輸入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { //e2.printStackTrace(); throw e2; } } return result; } private String getParamStr() { String paramStr=""; // 獲取所有響應頭字段 Map<String, String> params = this._params; // 獲取參數列表組成參數字符串 for (String key : params.keySet()) { paramStr+=key+"="+params.get(key)+"&"; } //去除最后一個"&" paramStr=paramStr.substring(0, paramStr.length()-1); return paramStr; }
} </pre>
本文由用戶 cnp5 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!