HttpHelper.java 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. package com.yihu.ehr.util.httpclient;
  2. import org.apache.http.NameValuePair;
  3. import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
  4. import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
  5. import org.apache.http.ssl.SSLContexts;
  6. import org.springframework.core.io.ClassPathResource;
  7. import org.springframework.core.io.Resource;
  8. import org.springframework.core.io.support.EncodedResource;
  9. import org.springframework.core.io.support.PropertiesLoaderUtils;
  10. import javax.net.ssl.SSLContext;
  11. import java.io.File;
  12. import java.util.List;
  13. import java.util.Map;
  14. import java.util.Properties;
  15. public class HttpHelper {
  16. private static String defaultPropertiesPath = "config/http.properties";
  17. private static SSLConnectionSocketFactory defaultSSL;
  18. private static String defaultHttpUser;
  19. private static String defaultHttpPassword;
  20. public static String defaultHttpUrl;
  21. public static String clientId;
  22. public static String clientKey;
  23. static {
  24. //默认配置
  25. try {
  26. Resource resource = new ClassPathResource(defaultPropertiesPath);
  27. EncodedResource encRes = new EncodedResource(resource,"UTF-8");
  28. Properties props = PropertiesLoaderUtils.loadProperties(encRes);
  29. defaultHttpUrl= props.getProperty("httpUrl");
  30. defaultHttpUser= props.getProperty("httpUser");
  31. defaultHttpPassword= props.getProperty("httpPassword");
  32. clientId = props.getProperty("clientId");
  33. clientKey = props.getProperty("clientKey");
  34. String sslKeystore = props.getProperty("sslKeystore");
  35. String sslPassword = props.getProperty("sslPassword");
  36. if(sslKeystore!=null && sslKeystore.length()>0 && sslPassword!=null &&sslPassword.length()>0)
  37. {
  38. SSLContext sslContext = SSLContexts.custom()
  39. .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(),
  40. new TrustSelfSignedStrategy())
  41. .build();
  42. defaultSSL = new SSLConnectionSocketFactory(
  43. sslContext,
  44. new String[]{"TLSv1"},
  45. null,
  46. new HopHostnameVerifier());
  47. }
  48. }
  49. catch (Exception e) {
  50. System.out.print(e.getMessage());
  51. }
  52. }
  53. /************************** Get方法 ******************************************/
  54. public static Response get(String url)
  55. {
  56. return get(url,null,null);
  57. }
  58. public static Response get(String url,Map<String,Object> params)
  59. {
  60. return get(url,params,null);
  61. }
  62. public static Response get(String url,Map<String,Object> params,Map<String,Object> header)
  63. {
  64. if(url.startsWith("https"))
  65. {
  66. return get(url,params,header,defaultSSL);
  67. }
  68. else{
  69. //默认http不走ssl和用户密码
  70. return get(url, params, header, null, null, null);
  71. }
  72. }
  73. public static Response get(String url,Map<String,Object> params,Map<String,Object> header,Boolean isCheck)
  74. {
  75. if(isCheck)
  76. {
  77. return get(url, params, header,defaultSSL, defaultHttpUser, defaultHttpPassword);
  78. }
  79. else{
  80. return get(url, params, header, null, null, null);
  81. }
  82. }
  83. public static Response get(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl)
  84. {
  85. return get(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
  86. }
  87. public static Response get(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
  88. {
  89. return HttpClientUtil.request("GET", url, params, header, ssl, user, password);
  90. }
  91. /************************** Post方法 ******************************************/
  92. public static Response post(String url)
  93. {
  94. return post(url, null, null);
  95. }
  96. public static Response post(String url,Map<String,Object> params)
  97. {
  98. return post(url, params, null);
  99. }
  100. public static Response post(String url,Map<String,Object> params,Map<String,Object> header)
  101. {
  102. if(url.startsWith("https"))
  103. {
  104. return post(url, params, header, defaultSSL);
  105. }
  106. else{
  107. //默认http不走ssl和用户密码
  108. return post(url, params, header, null, null, null);
  109. }
  110. }
  111. public static Response post(String url,Map<String,Object> params,Map<String,Object> header,Boolean isCheck)
  112. {
  113. if(isCheck)
  114. {
  115. return post(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
  116. }
  117. else{
  118. return post(url, params, header, null, null, null);
  119. }
  120. }
  121. public static Response post(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl)
  122. {
  123. return post(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
  124. }
  125. public static Response post(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
  126. {
  127. return HttpClientUtil.request("POST",url,params,header,ssl,user,password);
  128. }
  129. public static Response postFile(String url, List<NameValuePair> formParams, String filePath)
  130. {
  131. File file = new File(filePath);
  132. if(url.startsWith("https"))
  133. {
  134. return HttpClientUtil.postFile(url, file, formParams, defaultSSL,defaultHttpUser,defaultHttpPassword);
  135. }
  136. else{
  137. //默认http不走ssl和用户密码
  138. return HttpClientUtil.postFile(url, file, formParams, null,defaultHttpUser,defaultHttpPassword);
  139. }
  140. }
  141. public static Response postFile(String url, List<NameValuePair> formParams, File file)
  142. {
  143. if(url.startsWith("https"))
  144. {
  145. return HttpClientUtil.postFile(url, file, formParams, defaultSSL,defaultHttpUser,defaultHttpPassword);
  146. }
  147. else{
  148. //默认http不走ssl和用户密码
  149. return HttpClientUtil.postFile(url, file, formParams, null,defaultHttpUser,defaultHttpPassword);
  150. }
  151. }
  152. /************************** Put方法 ******************************************/
  153. public static Response put(String url)
  154. {
  155. return put(url, null, null);
  156. }
  157. public static Response put(String url,Map<String,Object> params)
  158. {
  159. return put(url, params, null);
  160. }
  161. public static Response put(String url,Map<String,Object> params,Map<String,Object> header)
  162. {
  163. if(url.startsWith("https"))
  164. {
  165. return put(url, params, header, defaultSSL);
  166. }
  167. else{
  168. //默认http不走ssl和用户密码
  169. return put(url, params, header, null, null, null);
  170. }
  171. }
  172. public static Response put(String url,Map<String,Object> params,Map<String,Object> header,Boolean isCheck)
  173. {
  174. if(isCheck)
  175. {
  176. return put(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
  177. }
  178. else{
  179. return put(url, params, header, null, null, null);
  180. }
  181. }
  182. public static Response put(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl)
  183. {
  184. return put(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
  185. }
  186. public static Response put(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
  187. {
  188. return HttpClientUtil.request("PUT",url,params,header,ssl,user,password);
  189. }
  190. /************************** Delete方法 **************************************/
  191. public static Response delete(String url)
  192. {
  193. return delete(url, null, null);
  194. }
  195. public static Response delete(String url,Map<String,Object> params)
  196. {
  197. return delete(url, params, null);
  198. }
  199. public static Response delete(String url,Map<String,Object> params,Map<String,Object> header)
  200. {
  201. if(url.startsWith("https"))
  202. {
  203. return delete(url, params, header, defaultSSL);
  204. }
  205. else{
  206. //默认http不走ssl和用户密码
  207. return delete(url, params, header, null, null, null);
  208. }
  209. }
  210. public static Response delete(String url,Map<String,Object> params,Map<String,Object> header,Boolean isCheck)
  211. {
  212. if(isCheck)
  213. {
  214. return delete(url, params, header, defaultSSL, defaultHttpUser, defaultHttpPassword);
  215. }
  216. else{
  217. return delete(url, params, header, null, null, null);
  218. }
  219. }
  220. public static Response delete(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl)
  221. {
  222. return delete(url, params, header, ssl, defaultHttpUser, defaultHttpPassword);
  223. }
  224. public static Response delete(String url,Map<String,Object> params,Map<String,Object> header,SSLConnectionSocketFactory ssl,String user,String password)
  225. {
  226. return HttpClientUtil.request("DELETE",url,params,header,ssl,user,password);
  227. }
  228. /**************************** 其他方法 ***************************************/
  229. }