From 69fb0832ebdfc4de5741f61a8cb3922b7e6566a0 Mon Sep 17 00:00:00 2001 From: xyli Date: Fri, 3 Mar 2023 18:11:30 +0800 Subject: [PATCH] =?UTF-8?q?NodeForward.java=20=20=E5=AE=9E=E7=8E=B0request?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/mpms/common/forward/NodeForward.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/main/java/mpms/common/forward/NodeForward.java b/src/main/java/mpms/common/forward/NodeForward.java index 74750b3..46cb52e 100644 --- a/src/main/java/mpms/common/forward/NodeForward.java +++ b/src/main/java/mpms/common/forward/NodeForward.java @@ -84,6 +84,80 @@ public class NodeForward { return request(nodeModel, null, nodeUrl, false, null, null, pName, pVal, val); } + /** + * 普通消息转发 + * + * @param nodeModel 节点 + * @param request 请求 + * @param nodeUrl 节点的url + * @param pVal 主参数值 + * @param pName 主参数名 + * @param userModel 用户 + * @param jsonData 数据 + * @param mustUser 是否必须需要user + * @param val 其他参数 + * @param 泛型 + * @return JSON + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + private static JsonMessage request(NodeModel nodeModel, + HttpServletRequest request, + NodeUrl nodeUrl, + boolean mustUser, + UserModel userModel, + JSONObject jsonData, + String pName, + Object pVal, + Object... val) { + + String url = nodeModel.getRealUrl(nodeUrl); + HttpRequest httpRequest = HttpUtil.createPost(url); + if (mustUser) { + if (userModel == null) { + userModel = BaseServerController.getUserModel(); + } + } + + addUser(httpRequest, nodeModel, nodeUrl, userModel); + + Map params = null; + if (request != null) { + params = request.getParameterMap(); + if (XssFilter.isXSS() && params != null) { + for (Map.Entry entry : (Iterable>) params.entrySet()) { + String[] values = entry.getValue(); + if (values != null) { + for (int i = 0, len = values.length; i < len; i++) { + values[i] = HtmlUtil.unescape(values[i]); + } + entry.setValue(values); + } + } + } + } + httpRequest.form(pName, pVal, val); + + if (jsonData != null) { + httpRequest.form(jsonData); + } + HttpResponse response; + try { + response = httpRequest + .form(params) + .execute(); + } catch (Exception e) { + /** + * + * revert version and add log print + * + */ + DefaultSystemLog.getLog().error("node [{}] connect failed...message: [{}]", nodeModel.getName(), e.getMessage()); + throw new AgentException(nodeModel.getName() + "节点异常:" + e.getMessage()); + } + + return parseBody(response); + } + -- Gitee