|
@@ -2,6 +2,7 @@ package cn.com.qmth.examcloud.app.service;
|
|
|
|
|
|
import cn.com.qmth.examcloud.app.core.SysProperty;
|
|
|
import cn.com.qmth.examcloud.app.core.router.Router;
|
|
|
+import cn.com.qmth.examcloud.app.core.utils.HttpClientBuilder;
|
|
|
import cn.com.qmth.examcloud.app.model.Constants;
|
|
|
import cn.com.qmth.examcloud.app.model.Result;
|
|
|
import okhttp3.*;
|
|
@@ -14,6 +15,7 @@ import org.springframework.stereotype.Component;
|
|
|
import org.springframework.util.Assert;
|
|
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
+import java.net.ConnectException;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
@@ -43,9 +45,11 @@ public class RouterService {
|
|
|
} else {
|
|
|
requestHeaders = router.getHeaders();
|
|
|
}
|
|
|
+
|
|
|
+ String traceId = this.getRandomTraceId();
|
|
|
requestHeaders.put(PARAM_KEY, router.getKey());
|
|
|
requestHeaders.put(PARAM_TOKEN, router.getToken());
|
|
|
- requestHeaders.put(PARAM_TRACE_ID, this.getRandomTraceId());
|
|
|
+ requestHeaders.put(PARAM_TRACE_ID, traceId);
|
|
|
requestHeaders.put(PARAM_CLIENT, PARAM_CLIENT_VALUE);
|
|
|
|
|
|
//处理请求Params
|
|
@@ -56,7 +60,7 @@ public class RouterService {
|
|
|
|
|
|
//处理请求地址
|
|
|
final String requestUrl = sysProperty.getProxyUrl(router.getServer()) + "/" + router.getUrl() + requestParams;
|
|
|
- log.info(String.format("[%s][%s]%s ", router.getServer().getInstanceName(), router.getMethod().name(), requestUrl));
|
|
|
+ log.info(String.format("[%s][%s][%s]%s ", traceId, router.getServer().getInstanceName(), router.getMethod().name(), requestUrl));
|
|
|
|
|
|
//封装请求
|
|
|
Request.Builder request = new Request.Builder()
|
|
@@ -65,21 +69,39 @@ public class RouterService {
|
|
|
|
|
|
switch (router.getMethod()) {
|
|
|
case GET:
|
|
|
- return this.call(request.get().build());
|
|
|
+ return this.call(request.get().build(), traceId);
|
|
|
case POST:
|
|
|
- return this.call(request.post(requestBody).build());
|
|
|
+ return this.call(request.post(requestBody).build(), traceId);
|
|
|
case PUT:
|
|
|
- return this.call(request.put(requestBody).build());
|
|
|
+ return this.call(request.put(requestBody).build(), traceId);
|
|
|
case DELETE:
|
|
|
- return this.call(request.delete(requestBody).build());
|
|
|
+ return this.call(request.delete(requestBody).build(), traceId);
|
|
|
+ default:
|
|
|
+ return new Result().error("请求方式错误!");
|
|
|
}
|
|
|
-
|
|
|
- return new Result().error();
|
|
|
}
|
|
|
|
|
|
- private Result call(Request request) {
|
|
|
- //todo
|
|
|
- return new Result().success();
|
|
|
+ private Result call(Request request, String traceId) {
|
|
|
+ OkHttpClient client = HttpClientBuilder.getClient();
|
|
|
+
|
|
|
+ try (Response response = client.newCall(request).execute();
|
|
|
+ ResponseBody body = response.body();) {
|
|
|
+ String bodyStr = body.string();
|
|
|
+
|
|
|
+ if (response.isSuccessful()) {
|
|
|
+ return new Result().success(bodyStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ log.warn(String.format("[%s][response] code:%s body:%s", traceId, response.code(), bodyStr));
|
|
|
+ return new Result().error(bodyStr);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
+ if (e instanceof ConnectException) {
|
|
|
+ return new Result().error("服务访问失败!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return new Result().error("请求异常!");
|
|
|
}
|
|
|
|
|
|
private RequestBody appendBody(String body) {
|