using NCC.ClayObject.Extensions; using NCC.Dependency; using System.Collections.Generic; using System.Linq; namespace System.Net.Http { /// /// HttpRequestMessage 拓展 /// [SuppressSniffer] public static class HttpRequestMessageExtensions { /// /// 追加查询参数 /// /// /// /// public static void AppendQueries(this HttpRequestMessage httpRequest, IDictionary queries, bool isEncode = true) { if (queries == null || queries.Count == 0) return; // 获取原始地址 var finalRequestUrl = httpRequest.RequestUri.OriginalString; // 拼接 var urlParameters = queries.Where(u => u.Value != null) .Select(u => $"{u.Key}={(isEncode ? Uri.EscapeDataString(u.Value?.ToString() ?? string.Empty) : (u.Value?.ToString() ?? string.Empty))}"); finalRequestUrl += $"{(finalRequestUrl.IndexOf("?") > -1 ? "&" : "?")}{string.Join("&", urlParameters)}"; // 重新设置地址 httpRequest.RequestUri = new Uri(finalRequestUrl, UriKind.RelativeOrAbsolute); } /// /// 追加查询参数 /// /// /// /// public static void AppendQueries(this HttpRequestMessage httpRequest, object queries, bool isEncode = true) { if (queries == null) return; httpRequest.AppendQueries(queries.ToDictionary(), isEncode); } } }