在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

使用java发送https的请求

2016-12-20 13:15| 发布者: zhangjf| 查看: 460| 评论: 0

摘要: 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 java ...
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.net.URL;
  4. import java.security.cert.CertificateException;
  5. import java.util.Map;
  6. import javax.net.ssl.HostnameVerifier;
  7. import javax.net.ssl.HttpsURLConnection;
  8. import javax.net.ssl.SSLContext;
  9. import javax.net.ssl.SSLSession;
  10. import javax.net.ssl.TrustManager;
  11. import javax.net.ssl.X509TrustManager;
  12. import java.security.cert.X509Certificate;
  13. public class HttpsGetData {
  14. private static class TrustAnyTrustManager implements X509TrustManager {
  15. public void checkClientTrusted(X509Certificate[] chain, String authType)
  16. throws CertificateException {
  17. }
  18. public void checkServerTrusted(X509Certificate[] chain, String authType)
  19. throws CertificateException {
  20. }
  21. public X509Certificate[] getAcceptedIssuers() {
  22. return new X509Certificate[] {};
  23. }
  24. }
  25. private static class TrustAnyHostnameVerifier implements HostnameVerifier {
  26. public boolean verify(String hostname, SSLSession session) {
  27. return true;
  28. }
  29. }
  30. String _url="";
  31. Map<String,String> _params;
  32. public HttpsGetData(String url,Map<String,String> keyValueParams)
  33. {
  34. this._url=url;
  35. this._params=keyValueParams;
  36. }
  37. public String Do() throws Exception
  38. {
  39. String result = "";
  40. BufferedReader in = null;
  41. try {
  42. String urlStr = this._url + "&" + getParamStr();
  43. System.out.println("GET请求的URL为:"+urlStr);
  44. SSLContext sc = SSLContext.getInstance("SSL");
  45. sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
  46. new java.security.SecureRandom());
  47. URL realUrl = new URL(urlStr);
  48. // 打开和URL之间的连接
  49. HttpsURLConnection connection = (HttpsURLConnection) realUrl.openConnection();
  50. //设置https相关属性
  51. connection.setSSLSocketFactory(sc.getSocketFactory());
  52. connection.setHostnameVerifier(new TrustAnyHostnameVerifier());
  53. connection.setDoOutput(true);
  54. // 设置通用的请求属性
  55. connection.setRequestProperty("accept", "*/*");
  56. connection.setRequestProperty("connection", "Keep-Alive");
  57. connection.setRequestProperty("user-agent",
  58. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  59. // 建立实际的连接
  60. connection.connect();
  61. // 定义 BufferedReader输入流来读取URL的响应
  62. in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
  63. String line;
  64. while ((line = in.readLine()) != null) {
  65. result += line;
  66. }
  67. System.out.println("获取的结果为:"+result);
  68. } catch (Exception e) {
  69. System.out.println("发送GET请求出现异常!" + e);
  70. //e.printStackTrace();
  71. throw e;
  72. }
  73. // 使用finally块来关闭输入流
  74. finally {
  75. try {
  76. if (in != null) {
  77. in.close();
  78. }
  79. } catch (Exception e2) {
  80. //e2.printStackTrace();
  81. throw e2;
  82. }
  83. }
  84. return result;
  85. }
  86. private String getParamStr()
  87. {
  88. String paramStr="";
  89. // 获取所有响应头字段
  90. Map<String, String> params = this._params;
  91. // 获取参数列表组成参数字符串
  92. for (String key : params.keySet()) {
  93. paramStr+=key+"="+params.get(key)+"&";
  94. }
  95. //去除最后一个"&"
  96. paramStr=paramStr.substring(0, paramStr.length()-1);
  97. return paramStr;
  98. }
  99. }
复制代码

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-8-23 04:36

Copyright 2015-2025 djqfx

返回顶部