package com.yihu.ehr.util.httpclient; import org.apache.http.NameValuePair; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.conn.ssl.TrustSelfSignedStrategy; import org.apache.http.ssl.SSLContexts; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.core.io.support.EncodedResource; import org.springframework.core.io.support.PropertiesLoaderUtils; import javax.net.ssl.SSLContext; import java.io.File; import java.util.List; import java.util.Map; import java.util.Properties; public class HttpHelper { private static String defaultPropertiesPath = "config/http.properties"; private static SSLConnectionSocketFactory defaultSSL; private static String defaultHttpUser; private static String defaultHttpPassword; public static String defaultHttpUrl; public static String clientId; public static String clientKey; static { //默认配置 try { Resource resource = new ClassPathResource(defaultPropertiesPath); EncodedResource encRes = new EncodedResource(resource,"UTF-8"); Properties props = PropertiesLoaderUtils.loadProperties(encRes); defaultHttpUrl= props.getProperty("httpUrl"); defaultHttpUser= props.getProperty("httpUser"); defaultHttpPassword= props.getProperty("httpPassword"); clientId = props.getProperty("clientId"); clientKey = props.getProperty("clientKey"); String sslKeystore = props.getProperty("sslKeystore"); String sslPassword = props.getProperty("sslPassword"); if(sslKeystore!=null && sslKeystore.length()>0 && sslPassword!=null &&sslPassword.length()>0) { SSLContext sslContext = SSLContexts.custom() .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(), new TrustSelfSignedStrategy()) .build(); defaultSSL = new SSLConnectionSocketFactory( sslContext, new String[]{"TLSv1"}, null, new HopHostnameVerifier()); } } catch (Exception e) { System.out.print(e.getMessage()); } } /************************** Get方法 ******************************************/ public static Response get(String url) { return get(url,null,null); } public static Response get(String url,Map params) { return get(url,params,null); } public static Response get(String url,Map params,Map header) { if(url.startsWith("https")) { return get(url,params,header,defaultSSL); } else{ //默认http不走ssl和用户密码 return get(url, params, header, null, null, null); } } public static Response get(String url,Map params,Map header,Boolean isCheck) { if(isCheck) { return get(url, params, header,defaultSSL, defaultHttpUser, defaultHttpPassword); } else{ return get(url, params, header, null, null, null); } } public static Response get(String url,Map params,Map header,SSLConnectionSocketFactory ssl) { return get(url, params, header, ssl, defaultHttpUser, defaultHttpPassword); } public static Response get(String url,Map params,Map header,SSLConnectionSocketFactory ssl,String user,String password) { return HttpClientUtil.request("GET", url, params, header, ssl, user, password); } /************************** Post方法 ******************************************/ public static Response post(String url) { return post(url, null, null); } public static Response post(String url,Map params) { return post(url, params, null); } public static Response post(String url,Map params,Map header) { if(url.startsWith("https")) { return post(url, params, header, defaultSSL); } else{ //默认http不走ssl和用户密码 return post(url, params, header, null, null, null); } } public static Response post(String url,Map params,Map header,Boolean isCheck) { if(isCheck) { return post(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword); } else{ return post(url, params, header, null, null, null); } } public static Response post(String url,Map params,Map header,SSLConnectionSocketFactory ssl) { return post(url, params, header, ssl, defaultHttpUser, defaultHttpPassword); } public static Response post(String url,Map params,Map header,SSLConnectionSocketFactory ssl,String user,String password) { return HttpClientUtil.request("POST",url,params,header,ssl,user,password); } public static Response postFile(String url, List formParams, String filePath) { File file = new File(filePath); if(url.startsWith("https")) { return HttpClientUtil.postFile(url, file, formParams, defaultSSL,defaultHttpUser,defaultHttpPassword); } else{ //默认http不走ssl和用户密码 return HttpClientUtil.postFile(url, file, formParams, null,defaultHttpUser,defaultHttpPassword); } } public static Response postFile(String url, List formParams, File file) { if(url.startsWith("https")) { return HttpClientUtil.postFile(url, file, formParams, defaultSSL,defaultHttpUser,defaultHttpPassword); } else{ //默认http不走ssl和用户密码 return HttpClientUtil.postFile(url, file, formParams, null,defaultHttpUser,defaultHttpPassword); } } /************************** Put方法 ******************************************/ public static Response put(String url) { return put(url, null, null); } public static Response put(String url,Map params) { return put(url, params, null); } public static Response put(String url,Map params,Map header) { if(url.startsWith("https")) { return put(url, params, header, defaultSSL); } else{ //默认http不走ssl和用户密码 return put(url, params, header, null, null, null); } } public static Response put(String url,Map params,Map header,Boolean isCheck) { if(isCheck) { return put(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword); } else{ return put(url, params, header, null, null, null); } } public static Response put(String url,Map params,Map header,SSLConnectionSocketFactory ssl) { return put(url, params, header, ssl, defaultHttpUser, defaultHttpPassword); } public static Response put(String url,Map params,Map header,SSLConnectionSocketFactory ssl,String user,String password) { return HttpClientUtil.request("PUT",url,params,header,ssl,user,password); } /************************** Delete方法 **************************************/ public static Response delete(String url) { return delete(url, null, null); } public static Response delete(String url,Map params) { return delete(url, params, null); } public static Response delete(String url,Map params,Map header) { if(url.startsWith("https")) { return delete(url, params, header, defaultSSL); } else{ //默认http不走ssl和用户密码 return delete(url, params, header, null, null, null); } } public static Response delete(String url,Map params,Map header,Boolean isCheck) { if(isCheck) { return delete(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword); } else{ return delete(url, params, header, null, null, null); } } public static Response delete(String url,Map params,Map header,SSLConnectionSocketFactory ssl) { return delete(url, params, header, ssl, defaultHttpUser, defaultHttpPassword); } public static Response delete(String url,Map params,Map header,SSLConnectionSocketFactory ssl,String user,String password) { return HttpClientUtil.request("DELETE",url,params,header,ssl,user,password); } /**************************** 其他方法 ***************************************/ }