U8对接请求优化

This commit is contained in:
2025-07-17 15:28:38 +08:00
parent 1234d04b04
commit 917167e2db

View File

@@ -8,6 +8,7 @@ using System.Globalization;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Net.Http; using System.Net.Http;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using U8Server.Util; using U8Server.Util;
using ZR.Model.MES.wms; using ZR.Model.MES.wms;
@@ -63,17 +64,14 @@ namespace ZR.Service.mes.wms_u8
} }
// 2. 构建URL和请求数据 // 2. 构建URL和请求数据
string url = BuildUrl(urlBase, action); string url = BuildUrl(urlBase, action, models);
string requestData = JsonConvert.SerializeObject(models); string requestData = JsonConvert.SerializeObject(models);
_logger.Debug($"{operation}请求数据: {requestData}"); _logger.Debug($"{operation}请求数据: {requestData}");
// 3. 构建headers含签名
var headers = BuildHeaders(requestData);
try try
{ {
_logger.Trace($"发送{operation}同步HTTP请求 - URL: {url}"); _logger.Trace($"发送{operation}同步HTTP请求 - URL: {url}");
object result = HttpHelper.HttpPost(url, requestData, "application/json", 5, headers); object result = HttpHelper.HttpPost(url, requestData, "application/json", 5, null);
// 4. 处理响应同步方法假设HttpPost返回已反序列化对象需根据实际HttpHelper调整 // 4. 处理响应同步方法假设HttpPost返回已反序列化对象需根据实际HttpHelper调整
return ProcessSyncResponse(result, operation, url); return ProcessSyncResponse(result, operation, url);
@@ -100,17 +98,14 @@ namespace ZR.Service.mes.wms_u8
} }
// 2. 构建URL和请求数据 // 2. 构建URL和请求数据
string url = BuildUrl(urlBase, action); string url = BuildUrl(urlBase, action, models);
string requestData = JsonConvert.SerializeObject(models); string requestData = JsonConvert.SerializeObject(models);
_logger.Debug($"{operation}请求数据: {requestData}"); _logger.Debug($"{operation}请求数据: {requestData}");
// 3. 构建headers含签名
var headers = BuildHeaders(requestData);
try try
{ {
_logger.Trace($"发送{operation}异步HTTP请求 - URL: {url}"); _logger.Trace($"发送{operation}异步HTTP请求 - URL: {url}");
string resultJson = await HttpHelper.HttpPostAsync(url, requestData, "application/json", 5, headers); string resultJson = await HttpHelper.HttpPostAsync(url, requestData, "application/json", 5, null);
// 4. 处理响应先校验JSON格式再反序列化 // 4. 处理响应先校验JSON格式再反序列化
return await ProcessAsyncResponse(resultJson, operation, url); return await ProcessAsyncResponse(resultJson, operation, url);
@@ -124,16 +119,30 @@ namespace ZR.Service.mes.wms_u8
#region #region
/// <summary> /// <summary>
/// 构建URL避免双斜杠问题 /// 构建URL避免双斜杠问题,并添加查询字符串参数
/// </summary> /// </summary>
private string BuildUrl(string urlBase, string action) private string BuildUrl(string urlBase, string action, List<ERP_WMS_interactiveModelQuery> models)
{ {
// 移除urlBase结尾的斜杠再拼接路径 // 移除urlBase结尾的斜杠再拼接路径
return $"{urlBase.TrimEnd('/')}/wms/mes/{action}"; string baseUrl = $"{urlBase.TrimEnd('/')}/wms/mes/{action}";
// 构建请求参数
string requestData = JsonConvert.SerializeObject(models);
var headers = BuildHeaders(requestData);
// 构建查询字符串
var queryString = string.Join("&", headers.Select(kv => $"{WebUtility.UrlEncode(kv.Key)}={WebUtility.UrlEncode(kv.Value)}"));
if (!string.IsNullOrEmpty(queryString))
{
baseUrl += $"?{queryString}";
}
return baseUrl;
} }
/// <summary> /// <summary>
/// 构建请求头(含签名生成 /// 构建请求参数(原构建请求头的逻辑
/// </summary> /// </summary>
private Dictionary<string, string> BuildHeaders(string requestData) private Dictionary<string, string> BuildHeaders(string requestData)
{ {