LogicToolNodeHelper.cs 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using System.Text.RegularExpressions;
  2. using Common;
  3. using Infrastructure;
  4. using LitJson;
  5. using Model;
  6. using Model.Custom;
  7. using Model.Source;
  8. namespace Util.Logic
  9. {
  10. public class LogicToolNodeHelper
  11. {
  12. /// <summary>
  13. /// HTTP请求节点
  14. /// </summary>
  15. /// <param name="node">节点数据</param>
  16. /// <param name="paramList">参数列表</param>
  17. public static void httpRequest(NodeList node, List<ParamList> paramList)
  18. {
  19. JsonData nodeData = node.nodeData;
  20. string requestMethod = nodeData["data"]["formData"]["requestMethod"]["value"].ToString(); // HTTP方法
  21. string requestUrl = nodeData["data"]["formData"]["requestUrl"]["value"].ToString(); // HTTP请求URL
  22. string responseParam = nodeData["data"]["formData"]["output"]["value"].ToString(); // HTTP响应参数
  23. string response = ""; // HTTP响应
  24. if(requestMethod == "GET") // GET请求
  25. {
  26. // 处理GET请求参数
  27. JsonData requestParams = nodeData["data"]["formData"]["requestParams"]["value"]; // HTTP请求参数
  28. // 处理GET请求参数中的参数
  29. Dictionary<string, string> requestParamsDict = new Dictionary<string, string>();
  30. foreach(JsonData param in requestParams)
  31. {
  32. string label = param["label"].ToString();
  33. string value = param["value"].ToString();
  34. if (value.Contains('.'))
  35. {
  36. value = value.Substring(value.LastIndexOf(".") + 1);
  37. var paramData = paramList.FirstOrDefault(x => x.paramName == value);
  38. if (paramData != null)
  39. {
  40. value = paramData.paramValue;
  41. }
  42. }
  43. requestParamsDict.Add(label, value);
  44. }
  45. response = Function.GetWebRequest( requestUrl + "?value=" + Newtonsoft.Json.JsonConvert.SerializeObject(requestParamsDict)); // 发送GET请求
  46. }
  47. else if(requestMethod == "POST" || requestMethod == "PUT") // POST/PUT请求
  48. {
  49. // 处理POST/PUT请求参数
  50. string requestBody = nodeData["data"]["formData"]["requestBody"]["value"].ToString(); // HTTP请求体
  51. // 处理POST/PUT请求体中的参数
  52. MatchCollection matches = Regex.Matches(requestBody, "${.*?}");
  53. foreach(Match match in matches)
  54. {
  55. string paramName = match.Value.Replace("${", "").Replace("}", "");
  56. var paramData = paramList.FirstOrDefault(x => x.paramName == paramName);
  57. if (paramData != null)
  58. {
  59. requestBody = requestBody.Replace("{" + paramName + "}", paramData.paramValue);
  60. }
  61. }
  62. response = Function.PostWebRequest( requestUrl, requestBody, requestMethod, "application/json"); // 发送POST/PUT请求
  63. }
  64. // 处理POST/PUT请求响应
  65. JsonData responseJson = JsonMapper.ToObject(response);
  66. // 处理POST/PUT请求响应中的参数
  67. foreach(JsonData param in responseParam)
  68. {
  69. string paramName = param["label"].ToString();
  70. string paramType = param["type"][0].ToString();
  71. JsonData paramValue = responseJson[paramName];
  72. ParamList paramListObj = new ParamList();
  73. paramListObj.nodeId = node.nodeId;
  74. paramListObj.paramName = paramName;
  75. paramListObj.paramType = paramType;
  76. if(paramType == "object" || paramType == "array")
  77. {
  78. paramListObj.paramValue = paramValue.ToJson();
  79. }
  80. else
  81. {
  82. paramListObj.paramValue = paramValue.ToString();
  83. }
  84. paramList.Add(paramListObj);
  85. }
  86. }
  87. }
  88. }