123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- package cn.com.qmth.mps.util;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.security.cert.CertificateException;
- import java.security.cert.X509Certificate;
- import java.util.Map;
- 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.qmth.boot.core.exception.StatusException;
- public class HttpUtil {
- /** 默认的编码格式 */
- private static final String DEFAULT_CHARSET = "UTF-8";
- private static final String CONTENT_TYPE = "Content-Type";
- private static final String APPLICATION_FORM= "application/x-www-form-urlencoded;charset=utf-8";
-
- private static final String APPLICATION_JSON = "application/json;charset=utf-8";
- public static String httpActionPost(String uri, Map<String, String> heads, Map<String, String> params) {
- String result = null;
- HttpsURLConnection conn = null;
- OutputStream os = null;
- InputStream is = null;
- try {
- // 获取链接
- URL url = new URL(uri);
- conn = (HttpsURLConnection) url.openConnection();
- conn.setRequestMethod("POST");
- conn.setRequestProperty(CONTENT_TYPE, APPLICATION_JSON);
- // ssl
- SSLContext context = SSLContext.getInstance("SSL", "SunJSSE");
- TrustManager[] tm = new TrustManager[] { new 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;
- }
- } };
- // 初始化
- context.init(null, tm, new java.security.SecureRandom());
- // 获取SSLSocketFactory对象
- SSLSocketFactory ssf = context.getSocketFactory();
- conn.setSSLSocketFactory(ssf);
- conn.setUseCaches(false);
- conn.setDoOutput(true);
- // 设置额外的参数
- if (heads != null && !heads.isEmpty()) {
- for (Map.Entry<String, String> head : heads.entrySet()) {
- conn.setRequestProperty(head.getKey(), head.getValue());
- }
- }
- // 创建链接
- conn.connect();
- if (params != null) {
- StringBuilder sb = new StringBuilder();
- for (Map.Entry<String, String> data : params.entrySet()) {
- sb.append(data.getKey()).append("=").append(data.getValue()).append("&");
- }
- os = conn.getOutputStream();
- os.write(sb.toString().getBytes());
- os.flush();
- }
- result = getResult(conn);
- } catch (Exception e) {
- throw new StatusException("授权服务器访问失败", e);
- } finally {
- try {
- if (os != null) {
- os.close();
- os = null;
- }
- if (is != null) {
- is.close();
- is = null;
- }
- } catch (IOException e) {
- }
- if (conn != null) {
- conn.disconnect();
- conn = null;
- }
- }
- return result;
- }
- /**
- *
- * @param params headers参数
- * @param datas requestParams参数
- * @return
- * @throws Exception
- */
- public static String httpActionGet(String uri, Map<String, String> heads, Map<String, String> params) {
- String result = null;
- HttpsURLConnection conn = null;
- OutputStream os = null;
- InputStream is = null;
- try {
- // 设置请求参数
- if (params != null) {
- StringBuilder sb = new StringBuilder();
- for (Map.Entry<String, String> data : params.entrySet()) {
- sb.append(data.getKey()).append("=").append(data.getValue()).append("&");
- }
- uri = uri+"?" + sb.toString();
- }
- // 获取链接
- URL url = new URL(uri);
- conn = (HttpsURLConnection) url.openConnection();
- conn.setRequestMethod("GET");
- conn.setRequestProperty(CONTENT_TYPE, APPLICATION_FORM);
- // ssl
- SSLContext context = SSLContext.getInstance("SSL", "SunJSSE");
- TrustManager[] tm = new TrustManager[] { new 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;
- }
- } };
- // 初始化
- context.init(null, tm, new java.security.SecureRandom());
- // 获取SSLSocketFactory对象
- SSLSocketFactory ssf = context.getSocketFactory();
- conn.setSSLSocketFactory(ssf);
- conn.setUseCaches(false);
- conn.setDoOutput(true);
- // 设置额外的参数
- if (heads != null && !heads.isEmpty()) {
- for (Map.Entry<String, String> head : heads.entrySet()) {
- conn.setRequestProperty(head.getKey(), head.getValue());
- }
- }
- // 创建链接
- conn.connect();
- result = getResult(conn);
- } catch (Exception e) {
- throw new StatusException("授权服务器访问失败", e);
- } finally {
- try {
- if (os != null) {
- os.close();
- os = null;
- }
- if (is != null) {
- is.close();
- is = null;
- }
- } catch (IOException e) {
- }
- if (conn != null) {
- conn.disconnect();
- conn = null;
- }
- }
- return result;
- }
- /**
- * 获得连接请求的返回数据
- *
- * @param conn
- *
- * @return 字符串
- */
- private static String getResult(HttpURLConnection conn) throws IOException {
- StringBuilder text = new StringBuilder();
- InputStream is = null;
- InputStreamReader sr = null;
- BufferedReader br = null;
- int code = conn.getResponseCode();
- try {
- is = code != 200 ? conn.getErrorStream() : conn.getInputStream();
- sr = new InputStreamReader(is, DEFAULT_CHARSET);
- br = new BufferedReader(sr);
- char[] chars = new char[4096];
- int length = 0;
- while ((length = br.read(chars)) != -1) {
- text.append(chars, 0, length);
- }
- } finally {
- if (br != null) {
- br.close();
- br = null;
- }
- if (sr != null) {
- sr.close();
- sr = null;
- }
- if (is != null) {
- is.close();
- is = null;
- }
- }
- if (code != 200) {
- throw new IOException(text.toString());
- }
- return text.toString();
- }
- }
|