1. 程式人生 > >https的get請求程式碼示例

https的get請求程式碼示例

package com.cmos.ebs.util;


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;


import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;


import com.cmos.core.logger.Logger;
import com.cmos.core.logger.LoggerFactory;




public class HttpsGetUtil {
private static final Logger logger = LoggerFactory.getActionLog(HttpsGetUtil.class);


public static String httpRequest(String requestUrl, String requestMethod, String outputStr) {
StringBuffer buffer = new StringBuffer();
try {


// 建立SSLContext物件,並使用我們指定的信任管理器初始化
TrustManager[] tm = { new MyX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());


// 從上述SSLContext物件中得到SSLSocketFactory物件
SSLSocketFactory ssf = sslContext.getSocketFactory();


// 開啟連線
URL url = new URL(requestUrl);
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);


// 設定請求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);


if ("GET".equalsIgnoreCase(requestMethod)) {
httpUrlConn.connect();
}
// 當有資料需要提交時
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意編碼格式,防止中文亂碼
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}


// 將返回的輸入流轉換成字串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 釋放資源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();

} catch (ConnectException ce) {
logger.error("server connection timed out.");
} catch (Exception e) {
logger.error("https request error:{}", e);
}
return buffer.toString();
}
private static class MyX509TrustManager implements  X509TrustManager{
@Override  
   public void checkClientTrusted(X509Certificate[] chain, String authType)  
           throws CertificateException {  
   }  
 
   @Override  
   public void checkServerTrusted(X509Certificate[] chain, String authType)  
           throws CertificateException {  
   }  
 
   @Override  
   public X509Certificate[] getAcceptedIssuers() {  
       return null;  
   } 
}
}