| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using System.Text.RegularExpressions;
- using Common;
- using Infrastructure;
- using LitJson;
- using Model;
- using Model.Custom;
- using Model.Source;
- namespace Util.Logic
- {
- public class LogicToolNodeHelper
- {
- /// <summary>
- /// HTTP请求节点
- /// </summary>
- /// <param name="node">节点数据</param>
- /// <param name="paramList">参数列表</param>
- public static void httpRequest(NodeList node, List<ParamList> paramList)
- {
- JsonData nodeData = node.nodeData;
- string requestMethod = nodeData["data"]["formData"]["requestMethod"]["value"].ToString(); // HTTP方法
- string requestUrl = nodeData["data"]["formData"]["requestUrl"]["value"].ToString(); // HTTP请求URL
- string responseParam = nodeData["data"]["formData"]["output"]["value"].ToString(); // HTTP响应参数
- string response = ""; // HTTP响应
- if(requestMethod == "GET") // GET请求
- {
- // 处理GET请求参数
- JsonData requestParams = nodeData["data"]["formData"]["requestParams"]["value"]; // HTTP请求参数
- // 处理GET请求参数中的参数
- Dictionary<string, string> requestParamsDict = new Dictionary<string, string>();
- foreach(JsonData param in requestParams)
- {
- string label = param["label"].ToString();
- string value = param["value"].ToString();
- if (value.Contains('.'))
- {
- value = value.Substring(value.LastIndexOf(".") + 1);
- var paramData = paramList.FirstOrDefault(x => x.paramName == value);
- if (paramData != null)
- {
- value = paramData.paramValue;
- }
- }
- requestParamsDict.Add(label, value);
- }
- response = Function.GetWebRequest( requestUrl + "?value=" + Newtonsoft.Json.JsonConvert.SerializeObject(requestParamsDict)); // 发送GET请求
- }
- else if(requestMethod == "POST" || requestMethod == "PUT") // POST/PUT请求
- {
- // 处理POST/PUT请求参数
- string requestBody = nodeData["data"]["formData"]["requestBody"]["value"].ToString(); // HTTP请求体
- // 处理POST/PUT请求体中的参数
- MatchCollection matches = Regex.Matches(requestBody, "${.*?}");
- foreach(Match match in matches)
- {
- string paramName = match.Value.Replace("${", "").Replace("}", "");
- var paramData = paramList.FirstOrDefault(x => x.paramName == paramName);
- if (paramData != null)
- {
- requestBody = requestBody.Replace("{" + paramName + "}", paramData.paramValue);
- }
- }
- response = Function.PostWebRequest( requestUrl, requestBody, requestMethod, "application/json"); // 发送POST/PUT请求
- }
- // 处理POST/PUT请求响应
- JsonData responseJson = JsonMapper.ToObject(response);
- // 处理POST/PUT请求响应中的参数
- foreach(JsonData param in responseParam)
- {
- string paramName = param["label"].ToString();
- string paramType = param["type"][0].ToString();
- JsonData paramValue = responseJson[paramName];
- ParamList paramListObj = new ParamList();
- paramListObj.nodeId = node.nodeId;
- paramListObj.paramName = paramName;
- paramListObj.paramType = paramType;
- if(paramType == "object" || paramType == "array")
- {
- paramListObj.paramValue = paramValue.ToJson();
- }
- else
- {
- paramListObj.paramValue = paramValue.ToString();
- }
- paramList.Add(paramListObj);
- }
- }
-
- }
- }
|