Commit bb6a4cb9f4b78112e9e6cff791bd2abd076a90db
1 parent
de675214
移除API日志记录ApiLogAspect类中非必要代码,移除HttpUtils工具类,统一使用OKHttpUtils
Signed-off-by: TanYibin <5491541@qq.com>
Showing
11 changed files
with
415 additions
and
597 deletions
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/acs/controller/AcsController.java
1 | package org.jeecg.modules.wms.api.acs.controller; | 1 | package org.jeecg.modules.wms.api.acs.controller; |
2 | 2 | ||
3 | +import java.util.Map; | ||
4 | + | ||
3 | import javax.annotation.Resource; | 5 | import javax.annotation.Resource; |
6 | +import javax.servlet.http.HttpServletRequest; | ||
4 | 7 | ||
5 | import org.jeecg.common.api.vo.Result; | 8 | import org.jeecg.common.api.vo.Result; |
6 | import org.jeecg.modules.wms.api.acs.entity.AcsStatus; | 9 | import org.jeecg.modules.wms.api.acs.entity.AcsStatus; |
@@ -11,7 +14,11 @@ import org.jeecg.modules.wms.task.agvTask.service.IAgvTaskService; | @@ -11,7 +14,11 @@ import org.jeecg.modules.wms.task.agvTask.service.IAgvTaskService; | ||
11 | import org.jeecg.utils.StringUtils; | 14 | import org.jeecg.utils.StringUtils; |
12 | import org.jeecg.utils.constant.QuantityConstant; | 15 | import org.jeecg.utils.constant.QuantityConstant; |
13 | import org.springframework.transaction.annotation.Transactional; | 16 | import org.springframework.transaction.annotation.Transactional; |
14 | -import org.springframework.web.bind.annotation.*; | 17 | +import org.springframework.web.bind.annotation.PostMapping; |
18 | +import org.springframework.web.bind.annotation.RequestBody; | ||
19 | +import org.springframework.web.bind.annotation.RequestMapping; | ||
20 | +import org.springframework.web.bind.annotation.ResponseBody; | ||
21 | +import org.springframework.web.bind.annotation.RestController; | ||
15 | 22 | ||
16 | import io.swagger.annotations.ApiOperation; | 23 | import io.swagger.annotations.ApiOperation; |
17 | 24 | ||
@@ -23,6 +30,17 @@ public class AcsController extends HuahengBaseController { | @@ -23,6 +30,17 @@ public class AcsController extends HuahengBaseController { | ||
23 | private IAcsService acsService; | 30 | private IAcsService acsService; |
24 | @Resource | 31 | @Resource |
25 | private IAgvTaskService agvTaskService; | 32 | private IAgvTaskService agvTaskService; |
33 | + | ||
34 | +// @PassApiAuthentication | ||
35 | + @ApiLogger(apiName = "API接口第三方Token校验测试", from = "TEST") | ||
36 | + @ResponseBody | ||
37 | + @PostMapping(value = "/testTokenCheck") | ||
38 | + public Result<?> testTokenCheck(@RequestBody Map<String, String> paramMap, HttpServletRequest request) { | ||
39 | + | ||
40 | + | ||
41 | + return new Result<>(); | ||
42 | + } | ||
43 | + | ||
26 | 44 | ||
27 | @PostMapping("/notifyAGVTask") | 45 | @PostMapping("/notifyAGVTask") |
28 | @ApiOperation("更新AGV状态") | 46 | @ApiOperation("更新AGV状态") |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/acs/service/impl/AcsServiceImpl.java
@@ -57,7 +57,7 @@ public class AcsServiceImpl implements IAcsService { | @@ -57,7 +57,7 @@ public class AcsServiceImpl implements IAcsService { | ||
57 | } | 57 | } |
58 | } | 58 | } |
59 | } | 59 | } |
60 | - Location toLocation = locationService.getLocationByCode(toPort, warehouseCode); | 60 | +// Location toLocation = locationService.getLocationByCode(toPort, warehouseCode); |
61 | agvTask.setPreTaskNo(preTaskNo); | 61 | agvTask.setPreTaskNo(preTaskNo); |
62 | boolean success = agvTaskService.updateById(agvTask); | 62 | boolean success = agvTaskService.updateById(agvTask); |
63 | if (!success) { | 63 | if (!success) { |
@@ -75,7 +75,7 @@ public class AcsServiceImpl implements IAcsService { | @@ -75,7 +75,7 @@ public class AcsServiceImpl implements IAcsService { | ||
75 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_ASSIGN); | 75 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_ASSIGN); |
76 | String jsonParam = JSON.toJSONString(agvEntity); | 76 | String jsonParam = JSON.toJSONString(agvEntity); |
77 | System.out.println(jsonParam); | 77 | System.out.println(jsonParam); |
78 | - String body = OkHttpUtils.bodypost(url, jsonParam); | 78 | + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); |
79 | if (StringUtils.isEmpty(body)) { | 79 | if (StringUtils.isEmpty(body)) { |
80 | throw new ServiceException("接口地址错误或返回为空"); | 80 | throw new ServiceException("接口地址错误或返回为空"); |
81 | } | 81 | } |
@@ -92,7 +92,7 @@ public class AcsServiceImpl implements IAcsService { | @@ -92,7 +92,7 @@ public class AcsServiceImpl implements IAcsService { | ||
92 | agvEntity.setTaskNo(agvTask.getId()); | 92 | agvEntity.setTaskNo(agvTask.getId()); |
93 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_CANCEL); | 93 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_CANCEL); |
94 | String jsonParam = JSON.toJSONString(agvEntity); | 94 | String jsonParam = JSON.toJSONString(agvEntity); |
95 | - String body = OkHttpUtils.bodypost(url, jsonParam); | 95 | + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); |
96 | if (StringUtils.isEmpty(body)) { | 96 | if (StringUtils.isEmpty(body)) { |
97 | throw new ServiceException("接口地址错误或返回为空"); | 97 | throw new ServiceException("接口地址错误或返回为空"); |
98 | } | 98 | } |
@@ -110,7 +110,7 @@ public class AcsServiceImpl implements IAcsService { | @@ -110,7 +110,7 @@ public class AcsServiceImpl implements IAcsService { | ||
110 | agvEntity.setPriority(agvTask.getPriority()); | 110 | agvEntity.setPriority(agvTask.getPriority()); |
111 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_UPDATE); | 111 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_AGV_TASK_UPDATE); |
112 | String jsonParam = JSON.toJSONString(agvEntity); | 112 | String jsonParam = JSON.toJSONString(agvEntity); |
113 | - String body = OkHttpUtils.bodypost(url, jsonParam); | 113 | + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); |
114 | if (StringUtils.isEmpty(body)) { | 114 | if (StringUtils.isEmpty(body)) { |
115 | throw new ServiceException("接口地址错误或返回为空"); | 115 | throw new ServiceException("接口地址错误或返回为空"); |
116 | } | 116 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/erp/service/impl/ErpServiceImpl.java
@@ -427,7 +427,7 @@ public class ErpServiceImpl implements IErpService { | @@ -427,7 +427,7 @@ public class ErpServiceImpl implements IErpService { | ||
427 | erpBackReceipt.setReceiptDetailList(receiptDetailList); | 427 | erpBackReceipt.setReceiptDetailList(receiptDetailList); |
428 | String jsonParam = JSON.toJSONString(erpBackReceipt); | 428 | String jsonParam = JSON.toJSONString(erpBackReceipt); |
429 | System.out.println(jsonParam); | 429 | System.out.println(jsonParam); |
430 | - String body = OkHttpUtils.bodypost(url, jsonParam); | 430 | + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); |
431 | if (StringUtils.isEmpty(body)) { | 431 | if (StringUtils.isEmpty(body)) { |
432 | throw new ServiceException("接口地址错误或返回为空"); | 432 | throw new ServiceException("接口地址错误或返回为空"); |
433 | } | 433 | } |
@@ -459,7 +459,7 @@ public class ErpServiceImpl implements IErpService { | @@ -459,7 +459,7 @@ public class ErpServiceImpl implements IErpService { | ||
459 | erpBackShipment.setShipmentDetailList(shipmentDetailList); | 459 | erpBackShipment.setShipmentDetailList(shipmentDetailList); |
460 | String jsonParam = JSON.toJSONString(erpBackShipment); | 460 | String jsonParam = JSON.toJSONString(erpBackShipment); |
461 | System.out.println(jsonParam); | 461 | System.out.println(jsonParam); |
462 | - String body = OkHttpUtils.bodypost(url, jsonParam); | 462 | + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); |
463 | if (StringUtils.isEmpty(body)) { | 463 | if (StringUtils.isEmpty(body)) { |
464 | throw new ServiceException("接口地址错误或返回为空"); | 464 | throw new ServiceException("接口地址错误或返回为空"); |
465 | } | 465 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/mes/servuce/impl/MesServiceImpl.java
@@ -258,7 +258,7 @@ public class MesServiceImpl implements IMesService { | @@ -258,7 +258,7 @@ public class MesServiceImpl implements IMesService { | ||
258 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_RECEIPT); | 258 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_RECEIPT); |
259 | String jsonParam = JSON.toJSONString(mesBackReceiptList); | 259 | String jsonParam = JSON.toJSONString(mesBackReceiptList); |
260 | System.out.println(jsonParam); | 260 | System.out.println(jsonParam); |
261 | - String body = OkHttpUtils.bodypost(url, jsonParam); | 261 | + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); |
262 | if (StringUtils.isEmpty(body)) { | 262 | if (StringUtils.isEmpty(body)) { |
263 | throw new ServiceException("接口地址错误或返回为空"); | 263 | throw new ServiceException("接口地址错误或返回为空"); |
264 | } | 264 | } |
@@ -327,7 +327,7 @@ public class MesServiceImpl implements IMesService { | @@ -327,7 +327,7 @@ public class MesServiceImpl implements IMesService { | ||
327 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_SHIPMENT); | 327 | String url = addressService.getUrlByParam(QuantityConstant.ADDRESS_MES_BACK_SHIPMENT); |
328 | String jsonParam = JSON.toJSONString(mesBackShipmentList); | 328 | String jsonParam = JSON.toJSONString(mesBackShipmentList); |
329 | System.out.println(jsonParam); | 329 | System.out.println(jsonParam); |
330 | - String body = OkHttpUtils.bodypost(url, jsonParam); | 330 | + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); |
331 | if (StringUtils.isEmpty(body)) { | 331 | if (StringUtils.isEmpty(body)) { |
332 | throw new ServiceException("接口地址错误或返回为空"); | 332 | throw new ServiceException("接口地址错误或返回为空"); |
333 | } | 333 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/api/wcs/service/WcsServiceImpl.java
@@ -256,7 +256,7 @@ public class WcsServiceImpl implements WcsService { | @@ -256,7 +256,7 @@ public class WcsServiceImpl implements WcsService { | ||
256 | String fromLocationCode = taskHeader.getFromLocationCode(); | 256 | String fromLocationCode = taskHeader.getFromLocationCode(); |
257 | String toLocationCode = taskHeader.getToLocationCode(); | 257 | String toLocationCode = taskHeader.getToLocationCode(); |
258 | Location fromLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode); | 258 | Location fromLocation = locationService.getLocationByCode(fromLocationCode, warehouseCode); |
259 | - Location toLocation = locationService.getLocationByCode(toLocationCode, warehouseCode); | 259 | +// Location toLocation = locationService.getLocationByCode(toLocationCode, warehouseCode); |
260 | boolean direction = true; // true 执行时是入库动作, false 执行时是出库动作 | 260 | boolean direction = true; // true 执行时是入库动作, false 执行时是出库动作 |
261 | switch (taskType) { | 261 | switch (taskType) { |
262 | case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT: | 262 | case QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT: |
@@ -378,7 +378,7 @@ public class WcsServiceImpl implements WcsService { | @@ -378,7 +378,7 @@ public class WcsServiceImpl implements WcsService { | ||
378 | wcsTask = switchTaskTypeToWcs(wcsTask); | 378 | wcsTask = switchTaskTypeToWcs(wcsTask); |
379 | String jsonParam = JSON.toJSONString(wcsTask); | 379 | String jsonParam = JSON.toJSONString(wcsTask); |
380 | System.out.println(jsonParam); | 380 | System.out.println(jsonParam); |
381 | - String body = OkHttpUtils.bodypost(url, jsonParam); | 381 | + String body = OkHttpUtils.sendPostByJsonStr(url, jsonParam); |
382 | if (StringUtils.isEmpty(body)) { | 382 | if (StringUtils.isEmpty(body)) { |
383 | throw new ServiceException("接口地址错误或返回为空"); | 383 | throw new ServiceException("接口地址错误或返回为空"); |
384 | } | 384 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiAuthenticationAspect.java
0 → 100644
1 | +package org.jeecg.modules.wms.framework.aspectj; | ||
2 | + | ||
3 | +import java.lang.reflect.Method; | ||
4 | + | ||
5 | +import javax.servlet.http.HttpServletRequest; | ||
6 | + | ||
7 | +import org.aspectj.lang.JoinPoint; | ||
8 | +import org.aspectj.lang.annotation.Aspect; | ||
9 | +import org.aspectj.lang.annotation.Before; | ||
10 | +import org.aspectj.lang.annotation.Pointcut; | ||
11 | +import org.aspectj.lang.reflect.MethodSignature; | ||
12 | +import org.springframework.scheduling.annotation.EnableAsync; | ||
13 | +import org.springframework.stereotype.Component; | ||
14 | +import org.springframework.web.context.request.RequestContextHolder; | ||
15 | +import org.springframework.web.context.request.ServletRequestAttributes; | ||
16 | + | ||
17 | +import lombok.extern.slf4j.Slf4j; | ||
18 | + | ||
19 | +/** | ||
20 | + * 第三方系统调用接口身份认证Aspect | ||
21 | + * @author TanYibin | ||
22 | + * @createDate 2023年2月14日 | ||
23 | + */ | ||
24 | +@Slf4j | ||
25 | +@Aspect | ||
26 | +@Component | ||
27 | +@EnableAsync | ||
28 | +public class ApiAuthenticationAspect { | ||
29 | + | ||
30 | + @Pointcut("execution(* org.jeecg.modules.wms.api..*.*(..)) " | ||
31 | + + "&& (@annotation(org.springframework.web.bind.annotation.RequestMapping) " | ||
32 | + + "|| @annotation(org.springframework.web.bind.annotation.GetMapping) " | ||
33 | + + "|| @annotation(org.springframework.web.bind.annotation.PostMapping))") | ||
34 | + public void executeController() {} | ||
35 | + | ||
36 | + /** | ||
37 | + * API Token 验证 | ||
38 | + * @author TanYibin | ||
39 | + * @createDate 2023年2月14日 | ||
40 | + * @param joinPoint | ||
41 | + * @throws NoSuchMethodException | ||
42 | + * @throws Throwable | ||
43 | + */ | ||
44 | + @Before("executeController()") | ||
45 | + public void doBefore(JoinPoint joinPoint) throws NoSuchMethodException, Throwable { | ||
46 | + Method method = this.getTargetMethod(joinPoint); | ||
47 | + // 检查是否有passtoken注释,有则跳过认证 | ||
48 | + if (method.isAnnotationPresent(PassApiAuthentication.class)) { | ||
49 | + PassApiAuthentication passApiAuthentication = method.getAnnotation(PassApiAuthentication.class); | ||
50 | + if (passApiAuthentication.required()) { | ||
51 | + return; | ||
52 | + } | ||
53 | + } | ||
54 | + // 获取request对象 | ||
55 | + ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); | ||
56 | + HttpServletRequest request = attributes.getRequest(); | ||
57 | + String token = request.getHeader("token"); | ||
58 | + log.info("开始校验Token:{}", token); | ||
59 | + } | ||
60 | + | ||
61 | + /** | ||
62 | + * 基于连接点信息获取目标方法对象 | ||
63 | + * @author TanYibin | ||
64 | + * @createDate 2023年2月14日 | ||
65 | + * @param joinPoint | ||
66 | + * @return | ||
67 | + * @throws NoSuchMethodException | ||
68 | + */ | ||
69 | + private Method getTargetMethod(JoinPoint joinPoint) throws NoSuchMethodException { | ||
70 | + // 获取目标类对象 | ||
71 | + Class<?> clazz = joinPoint.getTarget().getClass(); | ||
72 | + // 获取方法签名信息,方法名和参数列表 | ||
73 | + MethodSignature signature = (MethodSignature)joinPoint.getSignature(); | ||
74 | + // 获取目标方法对象 | ||
75 | + return clazz.getDeclaredMethod(signature.getName(), signature.getParameterTypes()); | ||
76 | + } | ||
77 | + | ||
78 | + /** | ||
79 | + * 获取方法类全名+方法名 | ||
80 | + * @author TanYibin | ||
81 | + * @createDate 2023年2月14日 | ||
82 | + * @param method | ||
83 | + * @return | ||
84 | + */ | ||
85 | + private String getClassAndMethodName(Method method) { | ||
86 | + // 获取类全名 | ||
87 | + String className = method.getDeclaringClass().getName(); | ||
88 | + // 获取方法名 | ||
89 | + String methodName = method.getName(); | ||
90 | + return new StringBuffer(className).append(".").append(methodName).toString(); | ||
91 | + } | ||
92 | +} |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/ApiLogAspect.java
1 | package org.jeecg.modules.wms.framework.aspectj; | 1 | package org.jeecg.modules.wms.framework.aspectj; |
2 | 2 | ||
3 | -import com.alibaba.fastjson.JSON; | ||
4 | -import com.alibaba.fastjson.JSONObject; | ||
5 | -import okhttp3.Request; | ||
6 | -import okhttp3.Response; | 3 | +import java.net.InetAddress; |
4 | +import java.net.URL; | ||
5 | +import java.net.UnknownHostException; | ||
6 | +import java.util.ArrayList; | ||
7 | +import java.util.Collection; | ||
8 | +import java.util.Date; | ||
9 | +import java.util.Enumeration; | ||
10 | +import java.util.HashMap; | ||
11 | +import java.util.Iterator; | ||
12 | +import java.util.Set; | ||
13 | + | ||
14 | +import javax.servlet.http.HttpServletRequest; | ||
15 | +import javax.servlet.http.HttpServletResponse; | ||
16 | + | ||
7 | import org.apache.commons.lang.exception.ExceptionUtils; | 17 | import org.apache.commons.lang.exception.ExceptionUtils; |
8 | import org.aspectj.lang.ProceedingJoinPoint; | 18 | import org.aspectj.lang.ProceedingJoinPoint; |
9 | import org.aspectj.lang.annotation.Around; | 19 | import org.aspectj.lang.annotation.Around; |
@@ -24,21 +34,18 @@ import org.jeecg.utils.constant.QuantityConstant; | @@ -24,21 +34,18 @@ import org.jeecg.utils.constant.QuantityConstant; | ||
24 | import org.slf4j.Logger; | 34 | import org.slf4j.Logger; |
25 | import org.slf4j.LoggerFactory; | 35 | import org.slf4j.LoggerFactory; |
26 | import org.springframework.beans.factory.annotation.Autowired; | 36 | import org.springframework.beans.factory.annotation.Autowired; |
27 | -import org.springframework.http.HttpHeaders; | ||
28 | import org.springframework.scheduling.annotation.Async; | 37 | import org.springframework.scheduling.annotation.Async; |
29 | import org.springframework.scheduling.annotation.EnableAsync; | 38 | import org.springframework.scheduling.annotation.EnableAsync; |
30 | import org.springframework.stereotype.Component; | 39 | import org.springframework.stereotype.Component; |
31 | -import org.springframework.web.context.request.RequestContextHolder; | ||
32 | -import org.springframework.web.context.request.ServletRequestAttributes; | ||
33 | 40 | ||
34 | -import javax.servlet.http.HttpServletRequest; | ||
35 | -import javax.servlet.http.HttpServletResponse; | ||
36 | -import java.net.HttpURLConnection; | ||
37 | -import java.net.URL; | ||
38 | -import java.util.*; | 41 | +import com.alibaba.fastjson.JSON; |
42 | +import com.alibaba.fastjson.JSONObject; | ||
43 | + | ||
44 | +import okhttp3.Request; | ||
45 | +import okhttp3.Response; | ||
39 | 46 | ||
40 | /** | 47 | /** |
41 | - * Api调用日志记录处理 | 48 | + * API调用日志记录处理 |
42 | * @author huaheng | 49 | * @author huaheng |
43 | */ | 50 | */ |
44 | @Aspect | 51 | @Aspect |
@@ -65,181 +72,173 @@ public class ApiLogAspect { | @@ -65,181 +72,173 @@ public class ApiLogAspect { | ||
65 | @Pointcut("@annotation(org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger)") | 72 | @Pointcut("@annotation(org.jeecg.modules.wms.framework.aspectj.lang.annotation.ApiLogger)") |
66 | public void logPointCut() {} | 73 | public void logPointCut() {} |
67 | 74 | ||
68 | - @Around("logPointCut() && @annotation(apiLogger)") | 75 | + @Around("logPointCut() && @annotation(apiLogger)") |
69 | public Object around(ProceedingJoinPoint point, ApiLogger apiLogger) throws Throwable { | 76 | public Object around(ProceedingJoinPoint point, ApiLogger apiLogger) throws Throwable { |
70 | - // 实际上静态方法上的Aop注解无法拦截到 | ||
71 | - if ("WMS".equalsIgnoreCase(apiLogger.from())) { | ||
72 | - return aroundWms2XXX(point, apiLogger); | ||
73 | - } else { | ||
74 | - return aroundXXX2Wms(point, apiLogger); | ||
75 | - } | 77 | + return aroundXXX2Wms(point, apiLogger); |
76 | } | 78 | } |
77 | 79 | ||
78 | - /** 处理xxx调用wms接口的日志 **/ | 80 | + /** 记录第三方系统调用WMS接口的日志 **/ |
79 | private Object aroundXXX2Wms(ProceedingJoinPoint point, ApiLogger apiLogger) { | 81 | private Object aroundXXX2Wms(ProceedingJoinPoint point, ApiLogger apiLogger) { |
80 | Object ret = null; | 82 | Object ret = null; |
81 | - ApiLog log = initApiLog(apiLogger, point); | 83 | + ApiLog apiLog = initApiLog(apiLogger, point); |
82 | try { | 84 | try { |
83 | ret = point.proceed(); | 85 | ret = point.proceed(); |
84 | } catch (Throwable e) { | 86 | } catch (Throwable e) { |
85 | - setApiLogThrowable(log, e); | 87 | + setApiLogThrowable(apiLog, e); |
86 | ret = Result.error(e.getMessage()); | 88 | ret = Result.error(e.getMessage()); |
87 | return ret; | 89 | return ret; |
88 | } finally { | 90 | } finally { |
89 | if (ret != null) { | 91 | if (ret != null) { |
90 | - finishApiLog(log, ret); | 92 | + finishApiLog(apiLog, ret); |
91 | } | 93 | } |
92 | } | 94 | } |
93 | return ret; | 95 | return ret; |
94 | } | 96 | } |
95 | 97 | ||
96 | - /** 处理WMS调用xxx接口的日志 **/ | ||
97 | - private Object aroundWms2XXX(ProceedingJoinPoint point, ApiLogger apiLogger) { | ||
98 | - Object ret = null; | ||
99 | - ApiLog log = new ApiLog(); | ||
100 | - | ||
101 | - HttpURLConnection connection = null; | ||
102 | - String body = null; | ||
103 | - | ||
104 | - try { | ||
105 | -// HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); | ||
106 | - connection = (HttpURLConnection)point.getArgs()[0]; | ||
107 | - body = (String)point.getArgs()[1]; | ||
108 | - initApiLog(connection, body); | ||
109 | - ret = point.proceed(); | ||
110 | - } catch (Throwable e) { | ||
111 | - setApiLogThrowable(log, e); | ||
112 | - ret = Result.error(e.getMessage()); | ||
113 | - } finally { | ||
114 | - if (ret != null) { | ||
115 | - finishApiLog(log, connection, ret.toString()); | ||
116 | - } | ||
117 | - } | ||
118 | - return ret; | ||
119 | - } | 98 | +// /** 记录WMS调用第三方接口的日志 **/ |
99 | +// private Object aroundWms2XXX(ProceedingJoinPoint point, ApiLogger apiLogger) { | ||
100 | +// Object ret = null; | ||
101 | +// ApiLog log = new ApiLog(); | ||
102 | +// | ||
103 | +// HttpURLConnection connection = null; | ||
104 | +// String body = null; | ||
105 | +// | ||
106 | +// try { | ||
107 | +// connection = (HttpURLConnection)point.getArgs()[0]; | ||
108 | +// body = (String)point.getArgs()[1]; | ||
109 | +// initApiLog(connection, body); | ||
110 | +// ret = point.proceed(); | ||
111 | +// } catch (Throwable e) { | ||
112 | +// setApiLogThrowable(log, e); | ||
113 | +// ret = Result.error(e.getMessage()); | ||
114 | +// } finally { | ||
115 | +// if (ret != null) { | ||
116 | +// finishApiLog(log, connection, ret.toString()); | ||
117 | +// } | ||
118 | +// } | ||
119 | +// return ret; | ||
120 | +// } | ||
121 | + | ||
122 | +// /** | ||
123 | +// * 记录响应头信息,保存日志到数据库 | ||
124 | +// */ | ||
125 | +// public static void finishApiLog(ApiLog log, HttpURLConnection connection, String body) { | ||
126 | +// try { | ||
127 | +// log.setResponseBody(body); | ||
128 | +// log.setResponseTime(new Date()); | ||
129 | +// Long duration = log.getResponseTime().getTime() - log.getRequestTime().getTime(); | ||
130 | +// log.setDuration(duration.intValue()); | ||
131 | +// log.setHttpCode(connection.getResponseCode()); | ||
132 | +// | ||
133 | +// // 响应头 | ||
134 | +// Set<String> keyset = connection.getHeaderFields().keySet(); | ||
135 | +// ArrayList<String> headerList = new ArrayList<>(); | ||
136 | +// Iterator<String> it = keyset.iterator(); | ||
137 | +// while (it.hasNext()) { | ||
138 | +// String name = it.next(); | ||
139 | +// String header = connection.getHeaderField(name); | ||
140 | +// if (name == null || "".equals(name)) { | ||
141 | +// // 第一行没有name | ||
142 | +// // HTTP/1.1 200 OK | ||
143 | +// headerList.add(header); | ||
144 | +// } else { | ||
145 | +// headerList.add(name + ": " + header); | ||
146 | +// } | ||
147 | +// } | ||
148 | +// log.setResponseHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n")); | ||
149 | +// Result json = JSON.parseObject(body, Result.class); | ||
150 | +// log.setRetCode(json.getCode()); | ||
151 | +// } catch (Exception e) { | ||
152 | +// e.printStackTrace(); | ||
153 | +// } finally { | ||
154 | +// SpringUtils.getBean(ApiLogAspect.class).saveApiLog(log); | ||
155 | +// } | ||
156 | +// } | ||
157 | + | ||
158 | +// /** | ||
159 | +// * 根据url,从address表中判断调用的去向 | ||
160 | +// */ | ||
161 | +// public static void parseUrl(ApiLog log, URL url, String warehouseCode) { | ||
162 | +// try { | ||
163 | +// String[] spList = url.toString().split("/"); | ||
164 | +// String apiName = spList[spList.length - 1]; | ||
165 | +// String ip = JeecgSystemApplication.getLocalHostExactAddress().getHostAddress(); | ||
166 | +// Address address = addressService.getAddressByUrl(url.toString(), warehouseCode); | ||
167 | +// log.setApiName(apiName); | ||
168 | +// log.setRequestFrom("WMS"); | ||
169 | +// log.setIp(ip); | ||
170 | +// log.setResponseBy(address.getParam().toUpperCase()); | ||
171 | +// } catch (Exception e) { | ||
172 | +// e.printStackTrace(); | ||
173 | +// } | ||
174 | +// } | ||
175 | + | ||
176 | +// /** | ||
177 | +// * 记录WMS调用第三方系统接口的请求信息 | ||
178 | +// * 在HttpUtils.body POST方法中直接调用本类static方法 | ||
179 | +// **/ | ||
180 | +// public static ApiLog initApiLog(String Method, String urlStr, String body, HttpHeaders headers, String warehouseCode) { | ||
181 | +// ApiLog log = new ApiLog(); | ||
182 | +// try { | ||
183 | +// URL url = new URL(urlStr); | ||
184 | +// log.setApiMethod(Method); | ||
185 | +// log.setUrl(urlStr); | ||
186 | +// log.setRequestTime(new Date()); | ||
187 | +// parseUrl(log, url, warehouseCode); | ||
188 | +// | ||
189 | +// // 请求头 | ||
190 | +// Set<String> keySet = headers.keySet(); | ||
191 | +// ArrayList<String> headerList = new ArrayList<>(); | ||
192 | +// Iterator<String> it = keySet.iterator(); | ||
193 | +// while (it.hasNext()) { | ||
194 | +// String name = it.next(); | ||
195 | +// String header = String.valueOf(headers.getContentType()); | ||
196 | +// headerList.add(name + ": " + header); | ||
197 | +// } | ||
198 | +// | ||
199 | +// log.setRequestHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n")); | ||
200 | +// log.setRequestBody(body); | ||
201 | +// } catch (Exception e) { | ||
202 | +// e.printStackTrace(); | ||
203 | +// } | ||
204 | +// | ||
205 | +// return log; | ||
206 | +// } | ||
207 | + | ||
208 | +// /** | ||
209 | +// * 记录WMS调用第三方系统接口的请求信息 | ||
210 | +// * 在HttpUtils.body POST方法中直接调用本类static方法 | ||
211 | +// **/ | ||
212 | +// public static ApiLog initApiLog(HttpURLConnection connection, String body) { | ||
213 | +// ApiLog log = new ApiLog(); | ||
214 | +// try { | ||
215 | +// log.setApiMethod(connection.getRequestMethod()); | ||
216 | +// log.setUrl(connection.getURL().toString()); | ||
217 | +// log.setRequestTime(new Date()); | ||
218 | +// parseUrl(log, connection.getURL()); | ||
219 | +// | ||
220 | +// // 请求头 | ||
221 | +// Set<String> keySet = connection.getRequestProperties().keySet(); | ||
222 | +// ArrayList<String> headerList = new ArrayList<>(); | ||
223 | +// Iterator<String> it = keySet.iterator(); | ||
224 | +// while (it.hasNext()) { | ||
225 | +// String name = it.next(); | ||
226 | +// String header = connection.getRequestProperty(name); | ||
227 | +// headerList.add(name + ":" + header); | ||
228 | +// } | ||
229 | +// | ||
230 | +// log.setRequestHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n")); | ||
231 | +// log.setRequestBody(body); | ||
232 | +// } catch (Exception e) { | ||
233 | +// e.printStackTrace(); | ||
234 | +// } | ||
235 | +// | ||
236 | +// return log; | ||
237 | +// } | ||
120 | 238 | ||
121 | /** | 239 | /** |
122 | - * 记录响应头信息 | ||
123 | - **/ | ||
124 | - public static void finishApiLog(ApiLog log, HttpURLConnection connection, String body) { | ||
125 | - try { | ||
126 | - log.setResponseBody(body); | ||
127 | - log.setResponseTime(new Date()); | ||
128 | - Long duration = log.getResponseTime().getTime() - log.getRequestTime().getTime(); | ||
129 | - log.setDuration(duration.intValue()); | ||
130 | - log.setHttpCode(connection.getResponseCode()); | ||
131 | - | ||
132 | - // 响应头 | ||
133 | - Set<String> keyset = connection.getHeaderFields().keySet(); | ||
134 | - ArrayList<String> headerList = new ArrayList<>(); | ||
135 | - Iterator<String> it = keyset.iterator(); | ||
136 | - while (it.hasNext()) { | ||
137 | - String name = it.next(); | ||
138 | - String header = connection.getHeaderField(name); | ||
139 | - if (name == null || "".equals(name)) { | ||
140 | - // 第一行没有name | ||
141 | - // HTTP/1.1 200 OK | ||
142 | - headerList.add(header); | ||
143 | - } else { | ||
144 | - headerList.add(name + ": " + header); | ||
145 | - } | ||
146 | - } | ||
147 | - log.setResponseHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n")); | ||
148 | - Result json = JSON.parseObject(body, Result.class); | ||
149 | - log.setRetCode(json.getCode()); | ||
150 | - } catch (Exception e) { | ||
151 | - e.printStackTrace(); | ||
152 | - } finally { | ||
153 | - SpringUtils.getBean(ApiLogAspect.class).saveApiLog(log); | ||
154 | - } | ||
155 | - } | ||
156 | - | ||
157 | - /** | ||
158 | - * 根据url,从address表中判断调用的去向 | ||
159 | - */ | ||
160 | - public static void parseUrl(ApiLog log, URL url, String warehouseCode) { | ||
161 | - try { | ||
162 | - String[] spList = url.toString().split("/"); | ||
163 | - String apiName = spList[spList.length - 1]; | ||
164 | -// int index = url.toString().lastIndexOf(apiName); | ||
165 | -// String addUrl = url.toString().substring(0, index); | ||
166 | - String ip = JeecgSystemApplication.getLocalHostExactAddress().getHostAddress(); | ||
167 | - Address address = addressService.getAddressByUrl(url.toString(), warehouseCode); | ||
168 | - log.setApiName(apiName); | ||
169 | - log.setRequestFrom("WMS"); | ||
170 | - log.setIp(ip); | ||
171 | - log.setResponseBy(address.getParam().toUpperCase()); | ||
172 | - } catch (Exception e) { | ||
173 | - e.printStackTrace(); | ||
174 | - } | ||
175 | - } | ||
176 | - | ||
177 | - /** | ||
178 | - * 记录WMS调用外接口的请求信息 | ||
179 | - * 在HttpUtils.body POST方法中直接调用本类static方法 | ||
180 | - **/ | ||
181 | - public static ApiLog initApiLog(String Method, String urlStr, String body, HttpHeaders headers, String warehouseCode) { | ||
182 | - ApiLog log = new ApiLog(); | ||
183 | - try { | ||
184 | - URL url = new URL(urlStr); | ||
185 | - log.setApiMethod(Method); | ||
186 | - log.setUrl(urlStr); | ||
187 | - log.setRequestTime(new Date()); | ||
188 | - parseUrl(log, url, warehouseCode); | ||
189 | - | ||
190 | - // 请求头 | ||
191 | - Set<String> keySet = headers.keySet(); | ||
192 | - ArrayList<String> headerList = new ArrayList<>(); | ||
193 | - Iterator<String> it = keySet.iterator(); | ||
194 | - while (it.hasNext()) { | ||
195 | - String name = it.next(); | ||
196 | - String header = String.valueOf(headers.getContentType()); | ||
197 | - headerList.add(name + ": " + header); | ||
198 | - } | ||
199 | - | ||
200 | - log.setRequestHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n")); | ||
201 | - log.setRequestBody(body); | ||
202 | - } catch (Exception e) { | ||
203 | - e.printStackTrace(); | ||
204 | - } | ||
205 | - | ||
206 | - return log; | ||
207 | - } | ||
208 | - | ||
209 | - /** | ||
210 | - * 记录WMS调用外接口的请求信息 | ||
211 | - * 在HttpUtils.body POST方法中直接调用本类static方法 | ||
212 | - **/ | ||
213 | - public static ApiLog initApiLog(HttpURLConnection connection, String body) { | ||
214 | - ApiLog log = new ApiLog(); | ||
215 | - try { | ||
216 | - log.setApiMethod(connection.getRequestMethod()); | ||
217 | - log.setUrl(connection.getURL().toString()); | ||
218 | - log.setRequestTime(new Date()); | ||
219 | - parseUrl(log, connection.getURL()); | ||
220 | - | ||
221 | - // 请求头 | ||
222 | - Set<String> keySet = connection.getRequestProperties().keySet(); | ||
223 | - ArrayList<String> headerList = new ArrayList<>(); | ||
224 | - Iterator<String> it = keySet.iterator(); | ||
225 | - while (it.hasNext()) { | ||
226 | - String name = it.next(); | ||
227 | - String header = connection.getRequestProperty(name); | ||
228 | - headerList.add(name + ":" + header); | ||
229 | - } | ||
230 | - | ||
231 | - log.setRequestHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n")); | ||
232 | - log.setRequestBody(body); | ||
233 | - } catch (Exception e) { | ||
234 | - e.printStackTrace(); | ||
235 | - } | ||
236 | - | ||
237 | - return log; | ||
238 | - } | ||
239 | - | ||
240 | - /** | ||
241 | - * 记录WMS调用外接口的请求信息 | ||
242 | - * 在HttpUtils.bodypost方法中直接调用本类static方法 | 240 | + * 记录WMS调用第三方系统接口的请求信息 |
241 | + * 在OKHttpUtils.bodypost方法中直接调用本类static方法 | ||
243 | **/ | 242 | **/ |
244 | public static ApiLog initApiLog(Request request, String body) { | 243 | public static ApiLog initApiLog(Request request, String body) { |
245 | ApiLog log = new ApiLog(); | 244 | ApiLog log = new ApiLog(); |
@@ -294,8 +293,6 @@ public class ApiLogAspect { | @@ -294,8 +293,6 @@ public class ApiLogAspect { | ||
294 | try { | 293 | try { |
295 | String[] spList = url.toString().split("/"); | 294 | String[] spList = url.toString().split("/"); |
296 | String apiName = spList[spList.length - 1]; | 295 | String apiName = spList[spList.length - 1]; |
297 | -// int index = url.toString().lastIndexOf(apiName); | ||
298 | -// String addUrl = url.toString().substring(0, index); | ||
299 | String ip = JeecgSystemApplication.getLocalHostExactAddress().getHostAddress(); | 296 | String ip = JeecgSystemApplication.getLocalHostExactAddress().getHostAddress(); |
300 | Address address = addressService.getAddressByUrl(url.toString(), QuantityConstant.DEFAULT_WAREHOUSE); | 297 | Address address = addressService.getAddressByUrl(url.toString(), QuantityConstant.DEFAULT_WAREHOUSE); |
301 | log.setApiName(apiName); | 298 | log.setApiName(apiName); |
@@ -307,40 +304,40 @@ public class ApiLogAspect { | @@ -307,40 +304,40 @@ public class ApiLogAspect { | ||
307 | } | 304 | } |
308 | } | 305 | } |
309 | 306 | ||
310 | - /** | ||
311 | - * 记录响应头信息 | ||
312 | - **/ | ||
313 | - public static void finishApiLog(ApiLog log, HttpHeaders headers, String body) { | ||
314 | - try { | ||
315 | - log.setResponseBody(body); | ||
316 | - log.setResponseTime(new Date()); | ||
317 | - Long duration = log.getResponseTime().getTime() - log.getRequestTime().getTime(); | ||
318 | - log.setDuration(duration.intValue()); | ||
319 | - log.setHttpCode(200); | ||
320 | - | ||
321 | - // 响应头 | ||
322 | - Set<String> keyset = headers.keySet(); | ||
323 | - ArrayList<String> headerList = new ArrayList<>(); | ||
324 | - Iterator<String> it = keyset.iterator(); | ||
325 | - while (it.hasNext()) { | ||
326 | - String name = it.next(); | ||
327 | - String header = String.valueOf(headers.getContentType()); | ||
328 | - if (name == null || "".equals(name)) | ||
329 | - // 第一行没有name | ||
330 | - // HTTP/1.1 200 OK | ||
331 | - headerList.add(header); | ||
332 | - else | ||
333 | - headerList.add(name + ": " + header); | ||
334 | - } | ||
335 | - log.setResponseHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n")); | ||
336 | - Result json = JSON.parseObject(body, Result.class); | ||
337 | - log.setRetCode(json.getCode()); | ||
338 | - } catch (Exception e) { | ||
339 | - e.printStackTrace(); | ||
340 | - } finally { | ||
341 | - SpringUtils.getBean(ApiLogAspect.class).saveApiLog(log); | ||
342 | - } | ||
343 | - } | 307 | +// /** |
308 | +// * 记录响应头信息 | ||
309 | +// **/ | ||
310 | +// public static void finishApiLog(ApiLog log, HttpHeaders headers, String body) { | ||
311 | +// try { | ||
312 | +// log.setResponseBody(body); | ||
313 | +// log.setResponseTime(new Date()); | ||
314 | +// Long duration = log.getResponseTime().getTime() - log.getRequestTime().getTime(); | ||
315 | +// log.setDuration(duration.intValue()); | ||
316 | +// log.setHttpCode(200); | ||
317 | +// | ||
318 | +// // 响应头 | ||
319 | +// Set<String> keyset = headers.keySet(); | ||
320 | +// ArrayList<String> headerList = new ArrayList<>(); | ||
321 | +// Iterator<String> it = keyset.iterator(); | ||
322 | +// while (it.hasNext()) { | ||
323 | +// String name = it.next(); | ||
324 | +// String header = String.valueOf(headers.getContentType()); | ||
325 | +// if (name == null || "".equals(name)) | ||
326 | +// // 第一行没有name | ||
327 | +// // HTTP/1.1 200 OK | ||
328 | +// headerList.add(header); | ||
329 | +// else | ||
330 | +// headerList.add(name + ": " + header); | ||
331 | +// } | ||
332 | +// log.setResponseHeader(org.apache.commons.lang3.StringUtils.join(headerList, "\n")); | ||
333 | +// Result json = JSON.parseObject(body, Result.class); | ||
334 | +// log.setRetCode(json.getCode()); | ||
335 | +// } catch (Exception e) { | ||
336 | +// e.printStackTrace(); | ||
337 | +// } finally { | ||
338 | +// SpringUtils.getBean(ApiLogAspect.class).saveApiLog(log); | ||
339 | +// } | ||
340 | +// } | ||
344 | 341 | ||
345 | private ApiLog initApiLog(ApiLogger apiLogger, ProceedingJoinPoint point) { | 342 | private ApiLog initApiLog(ApiLogger apiLogger, ProceedingJoinPoint point) { |
346 | ApiLog log = new ApiLog(); | 343 | ApiLog log = new ApiLog(); |
@@ -351,19 +348,16 @@ public class ApiLogAspect { | @@ -351,19 +348,16 @@ public class ApiLogAspect { | ||
351 | log.setApiName(apiLogger.apiName()); | 348 | log.setApiName(apiLogger.apiName()); |
352 | 349 | ||
353 | HttpServletRequest request = ServletUtils.getRequest(); | 350 | HttpServletRequest request = ServletUtils.getRequest(); |
354 | - | ||
355 | String qryStr = request.getQueryString(); | 351 | String qryStr = request.getQueryString(); |
356 | String url = request.getRequestURL().toString(); | 352 | String url = request.getRequestURL().toString(); |
357 | if (StringUtils.isNotEmpty(qryStr)) { | 353 | if (StringUtils.isNotEmpty(qryStr)) { |
358 | url = url + "?" + qryStr; | 354 | url = url + "?" + qryStr; |
359 | } | 355 | } |
360 | log.setUrl(url); | 356 | log.setUrl(url); |
361 | - | ||
362 | log.setApiMethod(request.getMethod()); | 357 | log.setApiMethod(request.getMethod()); |
363 | - log.setIp(request.getRemoteAddr()); | 358 | + log.setIp(this.getIpAddr(request)); |
364 | 359 | ||
365 | rebuildRequestHeader(log); | 360 | rebuildRequestHeader(log); |
366 | - | ||
367 | rebuildRequestBody(log, request); | 361 | rebuildRequestBody(log, request); |
368 | 362 | ||
369 | // 如果reqeust中取不到post参数,就从接口方法参数中取json对象 | 363 | // 如果reqeust中取不到post参数,就从接口方法参数中取json对象 |
@@ -410,7 +404,7 @@ public class ApiLogAspect { | @@ -410,7 +404,7 @@ public class ApiLogAspect { | ||
410 | ex.printStackTrace(); | 404 | ex.printStackTrace(); |
411 | } | 405 | } |
412 | } | 406 | } |
413 | - | 407 | + |
414 | public static void setApiLogThrowable(ApiLog log, Throwable e) { | 408 | public static void setApiLogThrowable(ApiLog log, Throwable e) { |
415 | try { | 409 | try { |
416 | String exception = ExceptionUtils.getFullStackTrace(e); | 410 | String exception = ExceptionUtils.getFullStackTrace(e); |
@@ -429,7 +423,7 @@ public class ApiLogAspect { | @@ -429,7 +423,7 @@ public class ApiLogAspect { | ||
429 | while (names.hasMoreElements()) { | 423 | while (names.hasMoreElements()) { |
430 | String name = (String)names.nextElement(); | 424 | String name = (String)names.nextElement(); |
431 | String header = req.getHeader(name); | 425 | String header = req.getHeader(name); |
432 | - headerList.add(name + ": " + header); | 426 | + headerList.add(name + ":" + header); |
433 | } | 427 | } |
434 | String headers = org.apache.commons.lang3.StringUtils.join(headerList, "\n"); | 428 | String headers = org.apache.commons.lang3.StringUtils.join(headerList, "\n"); |
435 | log.setRequestHeader(headers); | 429 | log.setRequestHeader(headers); |
@@ -527,4 +521,35 @@ public class ApiLogAspect { | @@ -527,4 +521,35 @@ public class ApiLogAspect { | ||
527 | e.printStackTrace(); | 521 | e.printStackTrace(); |
528 | } | 522 | } |
529 | } | 523 | } |
524 | + | ||
525 | + public String getIpAddr(HttpServletRequest request) { | ||
526 | + String ipAddress = request.getHeader("x-forwarded-for"); | ||
527 | + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { | ||
528 | + ipAddress = request.getHeader("Proxy-Client-IP"); | ||
529 | + } | ||
530 | + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { | ||
531 | + ipAddress = request.getHeader("WL-Proxy-Client-IP"); | ||
532 | + } | ||
533 | + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { | ||
534 | + ipAddress = request.getRemoteAddr(); | ||
535 | + if (ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")) { | ||
536 | + // 根据网卡取本机配置的IP | ||
537 | + InetAddress inet = null; | ||
538 | + try { | ||
539 | + inet = InetAddress.getLocalHost(); | ||
540 | + } catch (UnknownHostException e) { | ||
541 | + e.printStackTrace(); | ||
542 | + } | ||
543 | + ipAddress = inet.getHostAddress(); | ||
544 | + } | ||
545 | + } | ||
546 | + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 | ||
547 | + // "***.***.***.***".length() = 15 | ||
548 | + if (ipAddress != null && ipAddress.length() > 15) { | ||
549 | + if (ipAddress.indexOf(",") > 0) { | ||
550 | + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); | ||
551 | + } | ||
552 | + } | ||
553 | + return ipAddress; | ||
554 | + } | ||
530 | } | 555 | } |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/aspectj/PassApiAuthentication.java
0 → 100644
1 | +package org.jeecg.modules.wms.framework.aspectj; | ||
2 | + | ||
3 | +import java.lang.annotation.ElementType; | ||
4 | +import java.lang.annotation.Retention; | ||
5 | +import java.lang.annotation.RetentionPolicy; | ||
6 | +import java.lang.annotation.Target; | ||
7 | + | ||
8 | +/** | ||
9 | + * 跳过API身份验证注解 | ||
10 | + * @author TanYibin | ||
11 | + * @createDate 2023年2月13日 | ||
12 | + */ | ||
13 | +@Target({ElementType.METHOD, ElementType.TYPE}) | ||
14 | +@Retention(RetentionPolicy.RUNTIME) | ||
15 | +public @interface PassApiAuthentication { | ||
16 | + boolean required() default true; | ||
17 | +} |
huaheng-wms-core/src/main/java/org/jeecg/modules/wms/framework/controller/TestController.java
@@ -43,14 +43,14 @@ public class TestController extends HuahengBaseController { | @@ -43,14 +43,14 @@ public class TestController extends HuahengBaseController { | ||
43 | private ISysDataLogService sysDataLogService; | 43 | private ISysDataLogService sysDataLogService; |
44 | 44 | ||
45 | 45 | ||
46 | - @ApiLogger(apiName = "API接口第三方Token校验测试", from = "TEST") | ||
47 | - @ResponseBody | ||
48 | - @PostMapping(value = "/api/wms/testTokenCheck") | ||
49 | - public Result<?> testTokenCheck(@RequestBody Map<String, String> paramMap, HttpServletRequest request) { | ||
50 | - | ||
51 | - | ||
52 | - return new Result<>(); | ||
53 | - } | 46 | +// @ApiLogger(apiName = "API接口第三方Token校验测试", from = "TEST") |
47 | +// @ResponseBody | ||
48 | +// @PostMapping(value = "/api/wms/testTokenCheck") | ||
49 | +// public Result<?> testTokenCheck(@RequestBody Map<String, String> paramMap, HttpServletRequest request) { | ||
50 | +// | ||
51 | +// | ||
52 | +// return new Result<>(); | ||
53 | +// } | ||
54 | 54 | ||
55 | 55 | ||
56 | @AutoLog(value = "TestController-testRedis") | 56 | @AutoLog(value = "TestController-testRedis") |
huaheng-wms-core/src/main/java/org/jeecg/utils/http/HttpUtils.java deleted
1 | -package org.jeecg.utils.http; | ||
2 | - | ||
3 | -import org.apache.commons.io.IOUtils; | ||
4 | -import org.apache.http.HttpResponse; | ||
5 | -import org.apache.http.HttpStatus; | ||
6 | -import org.apache.http.client.methods.HttpPost; | ||
7 | -import org.apache.http.entity.StringEntity; | ||
8 | -import org.apache.http.impl.client.CloseableHttpClient; | ||
9 | -import org.apache.http.impl.client.HttpClients; | ||
10 | -import org.jeecg.modules.wms.framework.aspectj.ApiLogAspect; | ||
11 | -import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog; | ||
12 | -import org.slf4j.Logger; | ||
13 | -import org.slf4j.LoggerFactory; | ||
14 | - | ||
15 | -import javax.net.ssl.*; | ||
16 | -import java.io.*; | ||
17 | -import java.net.*; | ||
18 | -import java.security.cert.X509Certificate; | ||
19 | - | ||
20 | -/** | ||
21 | - * 通用http发送方法 | ||
22 | - * @author huaheng | ||
23 | - */ | ||
24 | -public class HttpUtils { | ||
25 | - | ||
26 | - private static final Logger log = LoggerFactory.getLogger(HttpUtils.class); | ||
27 | - | ||
28 | - /** | ||
29 | - * 向指定 URL 发送GET方法的请求 | ||
30 | - * @param url 发送请求的 URL | ||
31 | - * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 | ||
32 | - * @return 所代表远程资源的响应结果 | ||
33 | - */ | ||
34 | - public static String sendGet(String url, String param) { | ||
35 | - StringBuilder result = new StringBuilder(); | ||
36 | - BufferedReader in = null; | ||
37 | - try { | ||
38 | - String urlNameString = url + "?" + param; | ||
39 | - log.info("sendGet - {}", urlNameString); | ||
40 | - URL realUrl = new URL(urlNameString); | ||
41 | - URLConnection connection = realUrl.openConnection(); | ||
42 | - connection.setRequestProperty("accept", "*/*"); | ||
43 | - connection.setRequestProperty("connection", "Keep-Alive"); | ||
44 | - connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); | ||
45 | - connection.connect(); | ||
46 | - in = new BufferedReader(new InputStreamReader(connection.getInputStream())); | ||
47 | - String line; | ||
48 | - while ((line = in.readLine()) != null) { | ||
49 | - result.append(line); | ||
50 | - } | ||
51 | - log.info("recv - {}", result); | ||
52 | - } catch (ConnectException e) { | ||
53 | - log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e.getMessage()); | ||
54 | - } catch (SocketTimeoutException e) { | ||
55 | - log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage()); | ||
56 | - } catch (IOException e) { | ||
57 | - log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e.getMessage()); | ||
58 | - } catch (Exception e) { | ||
59 | - log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e.getMessage()); | ||
60 | - } finally { | ||
61 | - try { | ||
62 | - if (in != null) { | ||
63 | - in.close(); | ||
64 | - } | ||
65 | - } catch (Exception ex) { | ||
66 | - log.error("调用in.close Exception, url=" + url + ",param=" + param, ex.getMessage()); | ||
67 | - } | ||
68 | - } | ||
69 | - return result.toString(); | ||
70 | - } | ||
71 | - | ||
72 | - // post请求 为erp回传定制 | ||
73 | - public static String erppost(String strURL, String params, String key) { | ||
74 | - HttpURLConnection connection = null; | ||
75 | - InputStream is = null; | ||
76 | - OutputStreamWriter out = null; | ||
77 | - String result = null; | ||
78 | - ApiLog log = null; | ||
79 | - | ||
80 | - try { | ||
81 | - URL url = new URL(strURL);// 创建连接 | ||
82 | -// String ur = "" + url; | ||
83 | - connection = (HttpURLConnection)url.openConnection(); | ||
84 | - connection.setDoOutput(true); | ||
85 | - connection.setDoInput(true); | ||
86 | - connection.setUseCaches(false); | ||
87 | - connection.setInstanceFollowRedirects(true); | ||
88 | - connection.setRequestMethod("POST");// 设置请求方式 | ||
89 | - connection.setRequestProperty("Accept", "application/json");// 设置接收数据的格式 | ||
90 | - connection.setRequestProperty("Content-Type", "application/json");// 设置发送数据的格式 | ||
91 | - connection.setRequestProperty("apiKey", key);// 测试环境key | ||
92 | - log = ApiLogAspect.initApiLog(connection, params); | ||
93 | - connection.connect(); | ||
94 | - out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");// utf-8编码 | ||
95 | - out.append(params); | ||
96 | - out.flush(); | ||
97 | - out.close(); // 读取响应 | ||
98 | - int length = (int)connection.getContentLength();// 获取长度 | ||
99 | - is = connection.getInputStream(); | ||
100 | -// BufferedReader br = new BufferedReader(new InputStreamReader(is)); | ||
101 | - length = 10000; | ||
102 | - if (length > 0) { | ||
103 | - byte[] data = new byte[length]; | ||
104 | - byte[] temp = new byte[512]; | ||
105 | - int readLen = 0; | ||
106 | - int destPos = 0; | ||
107 | - while ((readLen = is.read(temp)) > 0) { | ||
108 | - System.arraycopy(temp, 0, data, destPos, readLen); | ||
109 | - destPos += readLen; | ||
110 | - } | ||
111 | - result = new String(data, "UTF-8"); | ||
112 | - System.out.println(result); | ||
113 | - } | ||
114 | - } catch (Exception e) { | ||
115 | - ApiLogAspect.setApiLogException(log, e); | ||
116 | - e.printStackTrace(); | ||
117 | - } finally { | ||
118 | - ApiLogAspect.finishApiLog(log, connection, result); | ||
119 | - if (connection != null) | ||
120 | - connection.disconnect(); | ||
121 | - IOUtils.closeQuietly(out, is); | ||
122 | - } | ||
123 | - return result; | ||
124 | - } | ||
125 | - | ||
126 | - /** | ||
127 | - * 向指定 URL 发送POST方法的请求 | ||
128 | - * @param url 发送请求的 URL | ||
129 | - * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 | ||
130 | - * @return 所代表远程资源的响应结果 | ||
131 | - */ | ||
132 | - public static String sendPost(String url, String param) { | ||
133 | - PrintWriter out = null; | ||
134 | - BufferedReader in = null; | ||
135 | - StringBuilder result = new StringBuilder(); | ||
136 | - try { | ||
137 | - String urlNameString = url + "?" + param; | ||
138 | - log.info("sendPost - {}", urlNameString); | ||
139 | - URL realUrl = new URL(urlNameString); | ||
140 | - URLConnection conn = realUrl.openConnection(); | ||
141 | - conn.setRequestProperty("accept", "*/*"); | ||
142 | - conn.setRequestProperty("connection", "Keep-Alive"); | ||
143 | - conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); | ||
144 | - conn.setRequestProperty("Accept-Charset", "utf-8"); | ||
145 | - conn.setRequestProperty("contentType", "utf-8"); | ||
146 | - conn.setDoOutput(true); | ||
147 | - conn.setDoInput(true); | ||
148 | - out = new PrintWriter(conn.getOutputStream()); | ||
149 | - out.print(param); | ||
150 | - out.flush(); | ||
151 | - if (((HttpURLConnection)conn).getResponseCode() >= 390) { | ||
152 | - in = new BufferedReader(new InputStreamReader(((HttpURLConnection)conn).getErrorStream())); | ||
153 | - } else { | ||
154 | - in = new BufferedReader(new InputStreamReader(conn.getInputStream())); | ||
155 | - } | ||
156 | -// in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8")); | ||
157 | - String line; | ||
158 | - while ((line = in.readLine()) != null) { | ||
159 | - result.append(line); | ||
160 | - } | ||
161 | - log.info("recv - {}", result); | ||
162 | - } catch (ConnectException e) { | ||
163 | - log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e.getMessage()); | ||
164 | - } catch (SocketTimeoutException e) { | ||
165 | - log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage()); | ||
166 | - } catch (IOException e) { | ||
167 | - log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e.getMessage()); | ||
168 | - } catch (Exception e) { | ||
169 | - log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e.getMessage()); | ||
170 | - } finally { | ||
171 | - try { | ||
172 | - if (out != null) { | ||
173 | - out.close(); | ||
174 | - } | ||
175 | - if (in != null) { | ||
176 | - in.close(); | ||
177 | - } | ||
178 | - } catch (IOException ex) { | ||
179 | - log.error("调用in.close Exception, url=" + url + ",param=" + param, ex.getMessage()); | ||
180 | - } | ||
181 | - } | ||
182 | - return result.toString(); | ||
183 | - } | ||
184 | - | ||
185 | - public static String sendSSLPost(String url, String param) { | ||
186 | - StringBuilder result = new StringBuilder(); | ||
187 | - String urlNameString = url + "?" + param; | ||
188 | - try { | ||
189 | - log.info("sendSSLPost - {}", urlNameString); | ||
190 | - SSLContext sc = SSLContext.getInstance("SSL"); | ||
191 | - sc.init(null, new TrustManager[] {new TrustAnyTrustManager()}, new java.security.SecureRandom()); | ||
192 | - URL console = new URL(urlNameString); | ||
193 | - HttpsURLConnection conn = (HttpsURLConnection)console.openConnection(); | ||
194 | - conn.setRequestProperty("accept", "*/*"); | ||
195 | - conn.setRequestProperty("connection", "Keep-Alive"); | ||
196 | - conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); | ||
197 | - conn.setRequestProperty("Accept-Charset", "utf-8"); | ||
198 | - conn.setRequestProperty("contentType", "utf-8"); | ||
199 | - conn.setDoOutput(true); | ||
200 | - conn.setDoInput(true); | ||
201 | - | ||
202 | - conn.setSSLSocketFactory(sc.getSocketFactory()); | ||
203 | - conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); | ||
204 | - conn.connect(); | ||
205 | - InputStream is = conn.getInputStream(); | ||
206 | - BufferedReader br = new BufferedReader(new InputStreamReader(is)); | ||
207 | - String ret = ""; | ||
208 | - while ((ret = br.readLine()) != null) { | ||
209 | - if (ret != null && !"".equals(ret.trim())) { | ||
210 | - result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8")); | ||
211 | - } | ||
212 | - } | ||
213 | - log.info("recv - {}", result); | ||
214 | - conn.disconnect(); | ||
215 | - br.close(); | ||
216 | - } catch (ConnectException e) { | ||
217 | - log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e.getMessage()); | ||
218 | - } catch (SocketTimeoutException e) { | ||
219 | - log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e.getMessage()); | ||
220 | - } catch (IOException e) { | ||
221 | - log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e.getMessage()); | ||
222 | - } catch (Exception e) { | ||
223 | - log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e.getMessage()); | ||
224 | - } | ||
225 | - return result.toString(); | ||
226 | - } | ||
227 | - | ||
228 | - // 此方法是将参数以body形式发送post请求 | ||
229 | - public static String bodypost(String strURL, String params) { | ||
230 | - System.out.println(strURL); | ||
231 | - System.out.println(params); | ||
232 | - HttpURLConnection connection = null; | ||
233 | - InputStream is = null; | ||
234 | - OutputStreamWriter out = null; | ||
235 | - String result = null; | ||
236 | - ApiLog log = null; | ||
237 | - | ||
238 | - try { | ||
239 | - URL url = new URL(strURL);// 创建连接 | ||
240 | - String stringUrl = "" + url; | ||
241 | - connection = (HttpURLConnection)url.openConnection(); | ||
242 | - connection.setDoOutput(true); | ||
243 | - connection.setDoInput(true); | ||
244 | - connection.setUseCaches(false); | ||
245 | - connection.setInstanceFollowRedirects(true); | ||
246 | - connection.setRequestMethod("POST");// 设置请求方式 | ||
247 | - connection.setRequestProperty("Accept", "application/json");// 设置接收数据的格式 | ||
248 | - connection.setRequestProperty("Content-Type", "application/json");// 设置发送数据的格式 | ||
249 | - if ((stringUrl.contains("10.0.15.19"))) { | ||
250 | - connection.setRequestProperty("apiKey", "c687ef505557428595e6a596fba5de6c");// 测试环境key | ||
251 | - } | ||
252 | - log = ApiLogAspect.initApiLog(connection, params); | ||
253 | - connection.connect(); | ||
254 | - out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");// utf-8编码 | ||
255 | - out.append(params); | ||
256 | - out.flush(); | ||
257 | - out.close(); // 读取响应 | ||
258 | - int length = (int)connection.getContentLength();// 获取长度 | ||
259 | - is = connection.getInputStream(); | ||
260 | -// BufferedReader br = new BufferedReader(new InputStreamReader(is)); | ||
261 | - length = 10000; | ||
262 | - if (length > 0) { | ||
263 | - byte[] data = new byte[length]; | ||
264 | - byte[] temp = new byte[512]; | ||
265 | - int readLen = 0; | ||
266 | - int destPos = 0; | ||
267 | - while ((readLen = is.read(temp)) > 0) { | ||
268 | - System.arraycopy(temp, 0, data, destPos, readLen); | ||
269 | - destPos += readLen; | ||
270 | - } | ||
271 | - result = new String(data, "UTF-8"); | ||
272 | - System.out.println(result); | ||
273 | - } | ||
274 | - } catch (Exception e) { | ||
275 | - ApiLogAspect.setApiLogException(log, e); | ||
276 | - e.printStackTrace(); | ||
277 | - } finally { | ||
278 | - ApiLogAspect.finishApiLog(log, connection, result); | ||
279 | - if (connection != null) | ||
280 | - connection.disconnect(); | ||
281 | - IOUtils.closeQuietly(out, is); | ||
282 | - } | ||
283 | - return result; | ||
284 | - } | ||
285 | - | ||
286 | - /** | ||
287 | - * 发送以json为参数的POST请求 | ||
288 | - * @param json | ||
289 | - * @param url | ||
290 | - * @return | ||
291 | - */ | ||
292 | - public static String sendJsonPostToken(String json, String url) { | ||
293 | - String result = ""; | ||
294 | - HttpPost post = new HttpPost(url); | ||
295 | - try { | ||
296 | - CloseableHttpClient httpClient = HttpClients.createDefault(); | ||
297 | - | ||
298 | - post.setHeader("Content-Type", "application/json;charset=utf-8"); | ||
299 | - post.addHeader("Authorization", "Basic YWRtaW46"); | ||
300 | - StringEntity postingString = new StringEntity(json, "utf-8"); | ||
301 | - post.setEntity(postingString); | ||
302 | - HttpResponse response = httpClient.execute(post); | ||
303 | - | ||
304 | - InputStream in = response.getEntity().getContent(); | ||
305 | - BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8")); | ||
306 | - StringBuilder strber = new StringBuilder(); | ||
307 | - String line = null; | ||
308 | - while ((line = br.readLine()) != null) { | ||
309 | - strber.append(line + '\n'); | ||
310 | - } | ||
311 | - br.close(); | ||
312 | - in.close(); | ||
313 | - result = strber.toString(); | ||
314 | - if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { | ||
315 | - result = "服务器异常"; | ||
316 | - } | ||
317 | - } catch (Exception e) { | ||
318 | - System.out.println("请求异常"); | ||
319 | - throw new RuntimeException(e); | ||
320 | - } finally { | ||
321 | - post.abort(); | ||
322 | - } | ||
323 | - return result; | ||
324 | - } | ||
325 | - | ||
326 | - private static class TrustAnyTrustManager implements X509TrustManager { | ||
327 | - @Override | ||
328 | - public void checkClientTrusted(X509Certificate[] chain, String authType) {} | ||
329 | - | ||
330 | - @Override | ||
331 | - public void checkServerTrusted(X509Certificate[] chain, String authType) {} | ||
332 | - | ||
333 | - @Override | ||
334 | - public X509Certificate[] getAcceptedIssuers() { | ||
335 | - return new X509Certificate[] {}; | ||
336 | - } | ||
337 | - } | ||
338 | - | ||
339 | - private static class TrustAnyHostnameVerifier implements HostnameVerifier { | ||
340 | - @Override | ||
341 | - public boolean verify(String hostname, SSLSession session) { | ||
342 | - return true; | ||
343 | - } | ||
344 | - } | ||
345 | - | ||
346 | -} |
huaheng-wms-core/src/main/java/org/jeecg/utils/http/OkHttpUtils.java
@@ -3,6 +3,8 @@ package org.jeecg.utils.http; | @@ -3,6 +3,8 @@ package org.jeecg.utils.http; | ||
3 | import com.alibaba.fastjson.JSON; | 3 | import com.alibaba.fastjson.JSON; |
4 | import com.alibaba.fastjson.TypeReference; | 4 | import com.alibaba.fastjson.TypeReference; |
5 | import com.alibaba.fastjson.parser.Feature; | 5 | import com.alibaba.fastjson.parser.Feature; |
6 | + | ||
7 | +import net.bytebuddy.asm.Advice.This; | ||
6 | import okhttp3.*; | 8 | import okhttp3.*; |
7 | import org.jeecg.modules.wms.framework.aspectj.ApiLogAspect; | 9 | import org.jeecg.modules.wms.framework.aspectj.ApiLogAspect; |
8 | import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog; | 10 | import org.jeecg.modules.wms.monitor.apiLog.entity.ApiLog; |
@@ -76,54 +78,68 @@ public class OkHttpUtils { | @@ -76,54 +78,68 @@ public class OkHttpUtils { | ||
76 | * @return 所代表远程资源的响应结果 | 78 | * @return 所代表远程资源的响应结果 |
77 | */ | 79 | */ |
78 | public static String sendGet(String url, String param) { | 80 | public static String sendGet(String url, String param) { |
81 | + ApiLog apiLog = null; | ||
79 | // headers 请求头 | 82 | // headers 请求头 |
80 | Map<String, String> headers = new HashMap<>(); | 83 | Map<String, String> headers = new HashMap<>(); |
81 | // 请求URI | 84 | // 请求URI |
82 | String urlNameString = url + "?" + param; | 85 | String urlNameString = url + "?" + param; |
83 | - | ||
84 | Request.Builder builder = new Request.Builder(); | 86 | Request.Builder builder = new Request.Builder(); |
85 | buildHeader(builder, headers); | 87 | buildHeader(builder, headers); |
86 | 88 | ||
87 | Request request = builder.url(urlNameString).get().build(); | 89 | Request request = builder.url(urlNameString).get().build(); |
88 | Response response = null; | 90 | Response response = null; |
91 | + String result = null; | ||
89 | try { | 92 | try { |
93 | + apiLog = ApiLogAspect.initApiLog(request, param); | ||
90 | response = HTTP_CLIENT.newCall(request).execute(); | 94 | response = HTTP_CLIENT.newCall(request).execute(); |
91 | if (response.isSuccessful() && Objects.nonNull(response.body())) { | 95 | if (response.isSuccessful() && Objects.nonNull(response.body())) { |
92 | - String result = response.body().string(); | ||
93 | - log.info("执行GET请求,url:{},header:{},param:{} 成功,返回数据:{}", url, JSON.toJSONString(headers), param, result); | ||
94 | - return result; | 96 | + result = response.body().string(); |
97 | + log.info("执行GET请求,url:{},header:{},param:{} 成功,返回结果:{}", url, JSON.toJSONString(headers), param, result); | ||
95 | } | 98 | } |
96 | } catch (IOException e) { | 99 | } catch (IOException e) { |
97 | log.error("执行GET请求,url:{},header:{},param:{} 失败!", url, JSON.toJSONString(headers), param, e); | 100 | log.error("执行GET请求,url:{},header:{},param:{} 失败!", url, JSON.toJSONString(headers), param, e); |
101 | + ApiLogAspect.setApiLogException(apiLog, e); | ||
102 | + } finally { | ||
103 | + ApiLogAspect.finishApiLog(apiLog, response, result); | ||
98 | } | 104 | } |
99 | - return ""; | 105 | + return result; |
100 | } | 106 | } |
101 | 107 | ||
102 | /** | 108 | /** |
103 | * 向指定 URL 发送POST方法的请求 | 109 | * 向指定 URL 发送POST方法的请求 |
104 | - * @param url 发送请求的 URL // * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 | ||
105 | - * @return 所代表远程资源的响应结果 | 110 | + * @param url 发送请求的 URL |
111 | + * @param param 请求参数,请求参数是 name1=value1&name2=value2 的形式。 | ||
112 | + * @return 远程资源的响应结果 | ||
113 | + * @throws IOException | ||
106 | */ | 114 | */ |
107 | public static String sendPost(String url, String param) { | 115 | public static String sendPost(String url, String param) { |
116 | + ApiLog apiLog = null; | ||
108 | FormBody.Builder builder = new FormBody.Builder(); | 117 | FormBody.Builder builder = new FormBody.Builder(); |
109 | String urlNameString = url + "?" + param; | 118 | String urlNameString = url + "?" + param; |
110 | FormBody body = builder.build(); | 119 | FormBody body = builder.build(); |
111 | Request request = new Request.Builder().url(urlNameString).post(body).build(); | 120 | Request request = new Request.Builder().url(urlNameString).post(body).build(); |
112 | Response response = null; | 121 | Response response = null; |
122 | + String result = null; | ||
113 | try { | 123 | try { |
124 | + apiLog = ApiLogAspect.initApiLog(request, param); | ||
114 | response = HTTP_CLIENT.newCall(request).execute(); | 125 | response = HTTP_CLIENT.newCall(request).execute(); |
115 | // 调用成功 | 126 | // 调用成功 |
116 | if (response.isSuccessful() && response.body() != null) { | 127 | if (response.isSuccessful() && response.body() != null) { |
117 | - return response.body().string(); | 128 | + result = response.body().string(); |
129 | + log.info("执行GET请求,url:{},param:{} 成功,返回结果:{}", url, param, result); | ||
118 | } | 130 | } |
119 | } catch (IOException e) { | 131 | } catch (IOException e) { |
120 | - e.printStackTrace(); | 132 | + log.error("执行GET请求,url:{},param:{} 失败!", url, param, e); |
133 | + ApiLogAspect.setApiLogException(apiLog, e); | ||
134 | + } finally { | ||
135 | + ApiLogAspect.finishApiLog(apiLog, response, result); | ||
121 | } | 136 | } |
122 | - return ""; | 137 | + return result; |
123 | } | 138 | } |
124 | 139 | ||
125 | - // 此方法是将参数以body形式发送post请求 | ||
126 | - public static String bodypost(String url, String json) { | 140 | + /** JSONString形式发送POST请求 |
141 | + * @throws IOException */ | ||
142 | + public static String sendPostByJsonStr(String url, String json) { | ||
127 | ApiLog apiLog = null; | 143 | ApiLog apiLog = null; |
128 | // using above json body as a input to post API call | 144 | // using above json body as a input to post API call |
129 | RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json); | 145 | RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json); |
@@ -144,8 +160,8 @@ public class OkHttpUtils { | @@ -144,8 +160,8 @@ public class OkHttpUtils { | ||
144 | log.info("执行POST请求,url:{},header:{},param:{} 成功,返回结果:{}", url, JSON.toJSONString(headers), json, result); | 160 | log.info("执行POST请求,url:{},header:{},param:{} 成功,返回结果:{}", url, JSON.toJSONString(headers), json, result); |
145 | } | 161 | } |
146 | } catch (IOException e) { | 162 | } catch (IOException e) { |
147 | - ApiLogAspect.setApiLogException(apiLog, e); | ||
148 | log.error("执行POST请求,url:{},header:{},param:{} 失败!", url, JSON.toJSONString(headers), json, e); | 163 | log.error("执行POST请求,url:{},header:{},param:{} 失败!", url, JSON.toJSONString(headers), json, e); |
164 | + ApiLogAspect.setApiLogException(apiLog, e); | ||
149 | } finally { | 165 | } finally { |
150 | ApiLogAspect.finishApiLog(apiLog, response, result); | 166 | ApiLogAspect.finishApiLog(apiLog, response, result); |
151 | } | 167 | } |
@@ -168,19 +184,15 @@ public class OkHttpUtils { | @@ -168,19 +184,15 @@ public class OkHttpUtils { | ||
168 | } | 184 | } |
169 | 185 | ||
170 | /** | 186 | /** |
171 | - * 支持嵌套泛型的post请求。 | ||
172 | - * | ||
173 | - * <pre> | ||
174 | - * Type type = new TypeToken<Results<User>>() {}.getType(); | ||
175 | - * | ||
176 | - * <pre/> | 187 | + * 支持嵌套泛型的POST请求 |
177 | * @param url 链接 | 188 | * @param url 链接 |
178 | * @param json 请求json | 189 | * @param json 请求json |
179 | * @param type 嵌套泛型 | 190 | * @param type 嵌套泛型 |
180 | * @return 响应对象, 可进行强转。 | 191 | * @return 响应对象, 可进行强转。 |
192 | + * @throws IOException | ||
181 | */ | 193 | */ |
182 | - public static <T> T post(String url, String json, TypeReference<T> type) { | ||
183 | - String result = bodypost(url, json); | 194 | + public static <T> T sendPostByJsonStr(String url, String jsonString, TypeReference<T> type) throws IOException { |
195 | + String result = sendPostByJsonStr(url, jsonString); | ||
184 | if (Objects.nonNull(result) && Objects.nonNull(type)) { | 196 | if (Objects.nonNull(result) && Objects.nonNull(type)) { |
185 | return JSON.parseObject(result, type); | 197 | return JSON.parseObject(result, type); |
186 | } | 198 | } |