使用java发送https的请求
2018-07-20 来源:open-open
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; } }
标签: ssl
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
下一篇:C# 将 HTML 转成纯文本
最新资讯
热门推荐