HttpsRequest.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.fuzamei.http;
  2. import java.io.BufferedReader;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStream;
  6. import java.net.URL;
  7. import java.security.cert.CertificateException;
  8. import java.security.cert.X509Certificate;
  9. import javax.net.ssl.HttpsURLConnection;
  10. import javax.net.ssl.SSLContext;
  11. import javax.net.ssl.SSLSocketFactory;
  12. import javax.net.ssl.TrustManager;
  13. import javax.net.ssl.X509TrustManager;
  14. public class HttpsRequest implements Request {
  15. public class MyX509TrustManager implements X509TrustManager {
  16. public void checkClientTrusted(X509Certificate[] chain, String authType)
  17. throws CertificateException {
  18. }
  19. public void checkServerTrusted(X509Certificate[] chain, String authType)
  20. throws CertificateException {
  21. // TODO Auto-generated method stub
  22. }
  23. public X509Certificate[] getAcceptedIssuers() {
  24. // TODO Auto-generated method stub
  25. return null;
  26. }
  27. }
  28. // 处理http请求 requestUrl为请求地址 requestMethod请求方式,值为"GET"或"POST"
  29. public String httpsRequest(String requestUrl, String requestMethod,
  30. String outputStr) throws Exception {
  31. StringBuffer buffer = null;
  32. try {
  33. // 创建SSLContext
  34. SSLContext sslContext = SSLContext.getInstance("SSL");
  35. TrustManager[] tm = { (TrustManager) new MyX509TrustManager() };
  36. // 初始化
  37. sslContext.init(null, tm, new java.security.SecureRandom());
  38. ;
  39. // 获取SSLSocketFactory对象
  40. SSLSocketFactory ssf = sslContext.getSocketFactory();
  41. URL url = new URL(requestUrl);
  42. HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
  43. conn.setDoOutput(true);
  44. conn.setDoInput(true);
  45. conn.setUseCaches(false);
  46. conn.setRequestMethod(requestMethod);
  47. // 设置当前实例使用的SSLSoctetFactory
  48. conn.setSSLSocketFactory(ssf);
  49. conn.connect();
  50. // 往服务器端写内容
  51. if (null != outputStr) {
  52. OutputStream os = (OutputStream) conn.getOutputStream();
  53. os.write(outputStr.getBytes("utf-8"));
  54. os.close();
  55. }
  56. // 读取服务器端返回的内容
  57. InputStream is = (InputStream) conn.getInputStream();
  58. InputStreamReader isr = new InputStreamReader(is, "utf-8");
  59. BufferedReader br = new BufferedReader(isr);
  60. buffer = new StringBuffer();
  61. String line = null;
  62. while ((line = br.readLine()) != null) {
  63. buffer.append(line);
  64. }
  65. } catch (Exception e) {
  66. e.printStackTrace();
  67. throw e;
  68. }
  69. return buffer.toString();
  70. }
  71. /*
  72. * 处理https GET/POST请求 请求地址、请求方法、参数
  73. */
  74. public String sendPost(String requestUrl, String outputStr)
  75. throws Exception {
  76. return httpsRequest(requestUrl, "POST", outputStr);
  77. }
  78. /*
  79. * 处理https GET/POST请求 请求地址、请求方法、参数
  80. */
  81. public String sendGet(String requestUrl, String outputStr) throws Exception {
  82. return httpsRequest(requestUrl + "?" + outputStr, "GET", null);
  83. }
  84. }