##HTTPS请求##
HttpsUtils代码
1package com.ices.utils.httpsHelp; 2import java.io.BufferedReader; 3import java.io.InputStream; 4import java.io.InputStreamReader; 5import java.io.OutputStream; 6import java.net.ConnectException; 7import java.net.URL; 8 9import javax.net.ssl.HttpsURLConnection; 10import javax.net.ssl.SSLContext; 11import javax.net.ssl.SSLSocketFactory; 12import javax.net.ssl.TrustManager; 13 14import org.apache.commons.logging.Log; 15import org.apache.commons.logging.LogFactory; 16 17/** 18* [@ClassName](https://my.oschina.net/u/3112573) HttpsUtils 19* @Description https 请求工具类 20* [@author](http://my.oschina.net/arthor) bin.w 21 * [@date](http://my.oschina.net/u/2504391) 2015-9-18 22*/ 23public class HttpsUtils { 24private static Log log=LogFactory.getLog(HttpsUtils.class); 25 26/** 27 * [@Title](http://my.oschina.net/title): httpRequest 28 * @Description: https 发起请求 29 * @param:@param requestUrl 请求地址 30 * @param:@param requestMethod 请求方式(GET、POST) 31 * @param:@param outputStr 提交的数据 32 * @param:@return 33 * @author: bin.w 34 * @date: 2015-9-18 下午9:23:07 35 */ 36public static String httpRequest(String requestUrl, String requestMethod, String outputStr) { 37 StringBuffer buffer = new StringBuffer(); 38 try { 39 // 创建SSLContext对象,并使用我们指定的信任管理器初始化 40 TrustManager[] tm = { new MyX509TrustManager() }; 41 SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); 42 sslContext.init(null, tm, new java.security.SecureRandom()); 43 // 从上述SSLContext对象中得到SSLSocketFactory对象 44 SSLSocketFactory ssf = sslContext.getSocketFactory(); 45 46 URL url = new URL(requestUrl); 47 HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection(); 48 httpUrlConn.setSSLSocketFactory(ssf); 49 50 httpUrlConn.setDoOutput(true); 51 httpUrlConn.setDoInput(true); 52 httpUrlConn.setUseCaches(false); 53 // 设置请求方式(GET/POST) 54 httpUrlConn.setRequestMethod(requestMethod); 55 56 if ("GET".equalsIgnoreCase(requestMethod)) 57 httpUrlConn.connect(); 58 59 // 当有数据需要提交时 60 if (null != outputStr) { 61 OutputStream outputStream = httpUrlConn.getOutputStream(); 62 // 注意编码格式,防止中文乱码 63 outputStream.write(outputStr.getBytes("UTF-8")); 64 outputStream.close(); 65 } 66 67 // 将返回的输入流转换成字符串 68 InputStream inputStream = httpUrlConn.getInputStream(); 69 InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); 70 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 71 72 String str = null; 73 while ((str = bufferedReader.readLine()) != null) { 74 buffer.append(str); 75 } 76 bufferedReader.close(); 77 inputStreamReader.close(); 78 // 释放资源 79 inputStream.close(); 80 inputStream = null; 81 httpUrlConn.disconnect(); 82 } catch (ConnectException ce) { 83 log.info("Weixin server connection timed out."); 84 } catch (Exception e) { 85 log.info("https request error:{}", e); 86 } 87 return buffer.toString(); 88 } 89 90}
MyX509TrustManager代码
1package com.ices.utils.httpsHelp; 2 3import java.security.cert.CertificateException; 4import java.security.cert.X509Certificate; 5 6import javax.net.ssl.X509TrustManager; 7 8/** 9 * @ClassName MyX509TrustManager 10 * @Description 证书信任管理器(用于https请求) 11 * @author bin.w 12 * @date 2015-9-18 13 */ 14public class MyX509TrustManager implements X509TrustManager{ 15 16 public void checkClientTrusted(X509Certificate[] chain, String authType) 17 throws CertificateException { 18 // TODO Auto-generated method stub 19 20 } 21 22 public void checkServerTrusted(X509Certificate[] chain, String authType) 23 throws CertificateException { 24 // TODO Auto-generated method stub 25 26 } 27 28 public X509Certificate[] getAcceptedIssuers() { 29 // TODO Auto-generated method stub 30 return null; 31 } 32 33}