pom文件
1 25 6 10io.guangsoft 7market 81.0 94.0.0 11 12market-utils 13jar 14 15 1617 18 43 4419 22 23commons-net 20commons-net 2124 27com.fasterxml.jackson.core 25jackson-databind 2628 31 32com.alibaba 29fastjson 3033 36 37org.apache.httpcomponents 34httpclient 3538 42javax.servlet 39javax.servlet-api 40provided 41
GResult.java
1 package io.guangsoft.market.util.bean; 2 3 public class GResult { 4 5 //状态码 6 private Integer gCode; 7 8 //状态信息 9 private String gMsg;10 11 //响应数据12 private Object gData;13 14 public GResult() {15 }16 17 public GResult(Integer gCode, String gMsg) {18 this.gCode = gCode;19 this.gMsg = gMsg;20 }21 22 public GResult(Integer gCode, String gMsg, Object gData) {23 this.gCode = gCode;24 this.gMsg = gMsg;25 this.gData = gData;26 }27 28 public Integer getgCode() {29 return gCode;30 }31 32 public void setgCode(Integer gCode) {33 this.gCode = gCode;34 }35 36 public String getgMsg() {37 return gMsg;38 }39 40 public void setgMsg(String gMsg) {41 this.gMsg = gMsg;42 }43 44 public Object getgData() {45 return gData;46 }47 48 public void setgData(Object gData) {49 this.gData = gData;50 }51 52 }
GResultUtil.java
1 package io.guangsoft.market.util.utils; 2 3 import com.alibaba.fastjson.JSONObject; 4 import io.guangsoft.market.util.bean.GResult; 5 6 import java.beans.BeanInfo; 7 import java.beans.Introspector; 8 import java.beans.PropertyDescriptor; 9 import java.lang.reflect.Method;10 import java.util.HashMap;11 import java.util.Map;12 13 public class GResultUtil {14 15 public static GResult success() {16 return new GResult(0, "操作成功!");17 }18 19 public static GResult fail() {20 return new GResult(1, "操作失败!");21 }22 23 public static GResult fail(Integer gCode) {24 return new GResult(gCode, "操作失败!");25 }26 27 public static GResult fail(Integer gCode, String gMsg) {28 return new GResult(gCode, gMsg);29 }30 31 public static GResult build(Integer gCode, String gMsg, Object gData) {32 return new GResult(gCode, gMsg, gData);33 }34 35 /**36 * 得到JSON格式的结果集37 */38 public static JSONObject toJSONResult(GResult gResult) {39 Map gResultMap = transBean2Map(gResult);40 return new JSONObject(gResultMap);41 }42 43 /**44 * 使用内省方式将bean转成map45 */46 public static MaptransBean2Map(Object obj) {47 if(obj == null){48 return null;49 }50 Map map = new HashMap ();51 try {52 BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());53 PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();54 for (PropertyDescriptor property : propertyDescriptors) {55 String key = property.getName();56 // 过滤class属性57 if (!key.equals("class")) {58 // 得到property对应的getter方法59 Method getter = property.getReadMethod();60 Object value = getter.invoke(obj);61 map.put(key, value);62 }63 }64 } catch (Exception e) {65 e.printStackTrace();66 }67 return map;68 }69 }
CookieUtil.java
1 package io.guangsoft.market.util.utils; 2 3 4 import java.net.URLDecoder; 5 import java.net.URLEncoder; 6 7 import javax.servlet.http.Cookie; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 public class CookieUtil { 12 13 /** 14 * 得到Cookie的值, 不编码 15 */ 16 public static String getCookieValue(HttpServletRequest request, String cookieName) { 17 return getCookieValue(request, cookieName, false); 18 } 19 20 /** 21 * 得到Cookie的值, 22 */ 23 public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) { 24 Cookie[] cookieList = request.getCookies(); 25 if (cookieList == null || cookieName == null) { 26 return null; 27 } 28 String retValue = null; 29 try { 30 for (int i = 0; i < cookieList.length; i++) { 31 if (cookieList[i].getName().equals(cookieName)) { 32 if (isDecoder) { 33 retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8"); 34 } else { 35 retValue = cookieList[i].getValue(); 36 } 37 break; 38 } 39 } 40 } catch (Exception e) { 41 e.printStackTrace(); 42 } 43 return retValue; 44 } 45 46 /** 47 * 得到Cookie的值, 48 */ 49 public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) { 50 Cookie[] cookieList = request.getCookies(); 51 if (cookieList == null || cookieName == null) { 52 return null; 53 } 54 String retValue = null; 55 try { 56 for (int i = 0; i < cookieList.length; i++) { 57 if (cookieList[i].getName().equals(cookieName)) { 58 retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString); 59 break; 60 } 61 } 62 } catch (Exception e) { 63 e.printStackTrace(); 64 } 65 return retValue; 66 } 67 68 /** 69 * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码 70 */ 71 public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, 72 String cookieValue) { 73 setCookie(request, response, cookieName, cookieValue, -1); 74 } 75 76 /** 77 * 设置Cookie的值 在指定时间内生效,但不编码 78 */ 79 public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, 80 String cookieValue, int cookieMaxage) { 81 setCookie(request, response, cookieName, cookieValue, cookieMaxage, false); 82 } 83 84 /** 85 * 设置Cookie的值 不设置生效时间,但编码 86 */ 87 public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, 88 String cookieValue, boolean isEncode) { 89 setCookie(request, response, cookieName, cookieValue, -1, isEncode); 90 } 91 92 /** 93 * 设置Cookie的值 在指定时间内生效, 编码参数 94 */ 95 public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, 96 String cookieValue, int cookieMaxage, boolean isEncode) { 97 doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode); 98 } 99 100 /**101 * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)102 */103 public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,104 String cookieValue, int cookieMaxage, String encodeString) {105 doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);106 }107 108 /**109 * 删除Cookie带cookie域名110 */111 public static void deleteCookie(HttpServletRequest request, HttpServletResponse response,112 String cookieName) {113 doSetCookie(request, response, cookieName, "", -1, false);114 }115 116 /**117 * 设置Cookie的值,并使其在指定时间内生效118 *119 * @param cookieMaxage cookie生效的最大秒数120 */121 private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,122 String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {123 try {124 if (cookieValue == null) {125 cookieValue = "";126 } else if (isEncode) {127 cookieValue = URLEncoder.encode(cookieValue, "utf-8");128 }129 Cookie cookie = new Cookie(cookieName, cookieValue);130 if (cookieMaxage > 0) {131 cookie.setMaxAge(cookieMaxage);132 }133 if (null != request) { // 设置域名的cookie134 String domainName = getDomainName(request);135 System.out.println(domainName);136 if (!"localhost".equals(domainName) && !"127.0.0.1".equals(domainName)) {137 cookie.setDomain(domainName);138 }139 }140 cookie.setPath("/");141 response.addCookie(cookie);142 } catch (Exception e) {143 e.printStackTrace();144 }145 }146 147 /**148 * 设置Cookie的值,并使其在指定时间内生效149 * @param cookieMaxage cookie生效的最大秒数150 */151 private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,152 String cookieName, String cookieValue, int cookieMaxage, String encodeString) {153 try {154 if (cookieValue == null) {155 cookieValue = "";156 } else {157 cookieValue = URLEncoder.encode(cookieValue, encodeString);158 }159 Cookie cookie = new Cookie(cookieName, cookieValue);160 if (cookieMaxage > 0) {161 cookie.setMaxAge(cookieMaxage);162 }163 if (null != request) { // 设置域名的cookie164 String domainName = getDomainName(request);165 System.out.println(domainName);166 if (!"localhost".equals(domainName)) {167 cookie.setDomain(domainName);168 }169 }170 cookie.setPath("/");171 response.addCookie(cookie);172 } catch (Exception e) {173 e.printStackTrace();174 }175 }176 177 /**178 * 得到cookie的域名179 */180 private static final String getDomainName(HttpServletRequest request) {181 String domainName = null;182 String serverName = request.getRequestURL().toString();183 if (serverName == null || serverName.equals("")) {184 domainName = "";185 } else {186 //http://www.baidu.com/aaa187 //www.baidu.com.cn/aaa/bb/ccc188 serverName = serverName.toLowerCase();189 serverName = serverName.substring(7);190 final int end = serverName.indexOf("/");191 serverName = serverName.substring(0, end);192 final String[] domains = serverName.split("\\.");193 int len = domains.length;194 if (len > 3) {195 // www.xxx.com.cn196 domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];197 } else if (len <= 3 && len > 1) {198 // xxx.com or xxx.cn199 domainName = "." + domains[len - 2] + "." + domains[len - 1];200 } else {201 domainName = serverName;202 }203 }204 if (domainName != null && domainName.indexOf(":") > 0) {205 String[] ary = domainName.split("\\:");206 domainName = ary[0];207 }208 return domainName;209 }210 }
HttpClientUtil.java
1 package io.guangsoft.market.util.utils; 2 3 import java.io.IOException; 4 import java.io.InterruptedIOException; 5 import java.net.URI; 6 import java.net.UnknownHostException; 7 import java.util.ArrayList; 8 import java.util.List; 9 import java.util.Map.Entry; 10 11 import javax.net.ssl.SSLException; 12 import javax.net.ssl.SSLHandshakeException; 13 14 import org.apache.http.Consts; 15 import org.apache.http.HttpEntity; 16 import org.apache.http.HttpEntityEnclosingRequest; 17 import org.apache.http.HttpRequest; 18 import org.apache.http.HttpResponse; 19 import org.apache.http.NameValuePair; 20 import org.apache.http.NoHttpResponseException; 21 import org.apache.http.client.HttpClient; 22 import org.apache.http.client.HttpRequestRetryHandler; 23 import org.apache.http.client.config.RequestConfig; 24 import org.apache.http.client.entity.UrlEncodedFormEntity; 25 import org.apache.http.client.methods.HttpPost; 26 import org.apache.http.client.protocol.HttpClientContext; 27 import org.apache.http.config.Registry; 28 import org.apache.http.config.RegistryBuilder; 29 import org.apache.http.conn.ConnectTimeoutException; 30 import org.apache.http.conn.socket.ConnectionSocketFactory; 31 import org.apache.http.conn.socket.LayeredConnectionSocketFactory; 32 import org.apache.http.conn.socket.PlainConnectionSocketFactory; 33 import org.apache.http.conn.ssl.SSLConnectionSocketFactory; 34 import org.apache.http.impl.client.CloseableHttpClient; 35 import org.apache.http.impl.client.HttpClients; 36 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; 37 import org.apache.http.message.BasicNameValuePair; 38 import org.apache.http.protocol.HttpContext; 39 import org.apache.http.util.EntityUtils; 40 41 import com.alibaba.fastjson.JSONObject; 42 43 public class HttpClientUtil { 44 45 private static CloseableHttpClient httpClient = null; 46 static final int maxTotal = 5000;//最大并发数 47 static final int defaultMaxPerRoute = 1000;//每路最大并发数 48 static final int connectionRequestTimeout = 5000;// ms毫秒,从池中获取链接超时时间 49 static final int connectTimeout = 5000;// ms毫秒,建立链接超时时间 50 static final int socketTimeout = 30000;// ms毫秒,读取超时时间 51 52 private static CloseableHttpClient initHttpClient() { 53 ConnectionSocketFactory plainFactory = PlainConnectionSocketFactory.getSocketFactory(); 54 LayeredConnectionSocketFactory sslFactory = SSLConnectionSocketFactory.getSocketFactory(); 55 Registryregistry = RegistryBuilder. create(). 56 register("http", plainFactory).register("https", sslFactory).build(); 57 PoolingHttpClientConnectionManager poolManager = new PoolingHttpClientConnectionManager(registry); 58 poolManager.setMaxTotal(maxTotal); 59 poolManager.setDefaultMaxPerRoute(defaultMaxPerRoute); 60 HttpRequestRetryHandler httpRetryHandler = new HttpRequestRetryHandler() { 61 @Override 62 public boolean retryRequest(IOException exception, int executionCount, HttpContext context) { 63 if(executionCount >= 2) { 64 return false; 65 } 66 if(exception instanceof NoHttpResponseException) { 67 return false; 68 } 69 if(exception instanceof SSLHandshakeException) { 70 return false; 71 } 72 if(exception instanceof InterruptedIOException) { 73 return false; 74 } 75 if(exception instanceof UnknownHostException) { 76 return false; 77 } 78 if(exception instanceof ConnectTimeoutException) { 79 return false; 80 } 81 if(exception instanceof SSLException) { 82 return false; 83 } 84 HttpClientContext clientContext = HttpClientContext.adapt(context); 85 HttpRequest request = clientContext.getRequest(); 86 if(!(request instanceof HttpEntityEnclosingRequest)) { 87 return true; 88 } 89 return false; 90 } 91 }; 92 RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(connectionRequestTimeout). 93 setConnectTimeout(connectTimeout).setSocketTimeout(socketTimeout).build(); 94 CloseableHttpClient closeableHttpClient = HttpClients.custom().setConnectionManager(poolManager).setDefaultRequestConfig(requestConfig). 95 setRetryHandler(httpRetryHandler).build(); 96 return closeableHttpClient; 97 } 98 99 public static CloseableHttpClient getHttpClient() {100 if(httpClient == null) {101 synchronized (HttpClientUtil.class) {102 if(httpClient == null) {103 httpClient = initHttpClient();104 }105 }106 }107 return httpClient;108 }109 110 public static JSONObject sendPost(JSONObject requestData) {111 JSONObject result = new JSONObject();112 String url = requestData.getString("url");113 JSONObject parameter = requestData.getJSONObject("parameter");114 try {115 HttpClient httpClient = HttpClientUtil.getHttpClient();116 HttpPost httpPost = new HttpPost();117 httpPost.setURI(new URI(url));118 List param = new ArrayList ();119 for(Entry entry : parameter.entrySet()) { 120 param.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));121 }122 httpPost.setEntity(new UrlEncodedFormEntity(param, Consts.UTF_8));123 HttpResponse response = httpClient.execute(httpPost);124 HttpEntity entity = response.getEntity();125 String responseBody = EntityUtils.toString(entity);126 int code = response.getStatusLine().getStatusCode();127 result.put("CODE", code);128 try {129 JSONObject responseJson = JSONObject.parseObject(responseBody);130 result.put("DATA", responseJson);131 } catch(Exception e) {132 result.put("DATA", responseBody);133 }134 httpPost.abort(); 135 httpPost.releaseConnection(); 136 } catch (Exception e) {137 e.printStackTrace();138 }139 return result;140 }141 142 }