150 lines
3.8 KiB
C#
150 lines
3.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace MAX.Core.Helpers;
|
|
|
|
public class UriHelper
|
|
{
|
|
#region 对外公开方法
|
|
/// <summary>
|
|
/// 带有前缀的域名
|
|
/// </summary>
|
|
/// <param name="url"></param>
|
|
/// <returns></returns>
|
|
public static string GetSchemeDomain(string url)
|
|
{
|
|
Uri uri = new(url);
|
|
return $"{uri.Scheme}://{uri.Authority}";
|
|
}
|
|
/// <summary>
|
|
/// 获取域名
|
|
/// </summary>
|
|
/// <param name="url"></param>
|
|
/// <returns></returns>
|
|
public static string GetDomain(string url)
|
|
{
|
|
Uri uri = new(url);
|
|
return uri.Host;
|
|
}
|
|
/// <summary>
|
|
/// 获取 URL
|
|
/// </summary>
|
|
/// <param name="url">URL 地址</param>
|
|
/// <returns></returns>
|
|
public static string GetUrl(string url)
|
|
{
|
|
Uri uri = new(url);
|
|
return uri.AbsolutePath;
|
|
}
|
|
/// <summary>
|
|
/// URL 解码
|
|
/// </summary>
|
|
/// <param name="url">URL 地址</param>
|
|
/// <returns></returns>
|
|
public static string UrlDecode(string url)
|
|
{
|
|
return System.Web.HttpUtility.UrlDecode(url);
|
|
}
|
|
/// <summary>
|
|
/// URL 解码
|
|
/// </summary>
|
|
/// <param name="url">URL 地址</param>
|
|
/// <param name="encoding">编码格式</param>
|
|
/// <returns></returns>
|
|
public static string UrlDecode(string url, Encoding encoding)
|
|
{
|
|
return System.Web.HttpUtility.UrlDecode(url, encoding);
|
|
}
|
|
/// <summary>
|
|
/// URL 编码
|
|
/// </summary>
|
|
/// <param name="url">URL 地址</param>
|
|
/// <returns></returns>
|
|
public static string UrlEncode(string url)
|
|
{
|
|
return System.Web.HttpUtility.UrlEncode(url);
|
|
}
|
|
/// <summary>
|
|
/// URL 编码
|
|
/// </summary>
|
|
/// <param name="url">URL 地址</param>
|
|
/// <param name="encoding">编码格式</param>
|
|
/// <returns></returns>
|
|
public static string UrlEncode(string url, Encoding encoding)
|
|
{
|
|
return System.Web.HttpUtility.UrlEncode(url, encoding);
|
|
}
|
|
/// <summary>
|
|
/// 获取参数列表
|
|
/// </summary>
|
|
/// <param name="url">Url 地址</param>
|
|
/// <returns></returns>
|
|
public static List<string> GetQueryList(string url)
|
|
{
|
|
return GetQueryList(url, Encoding.UTF8);
|
|
}
|
|
/// <summary>
|
|
/// 获取参数列表
|
|
/// </summary>
|
|
/// <param name="url">Url 地址</param>
|
|
/// <param name="encoding">编码格式</param>
|
|
/// <returns></returns>
|
|
public static List<string> GetQueryList(string url, Encoding encoding)
|
|
{
|
|
Uri uri = new(url);
|
|
string query = uri.PathAndQuery;
|
|
if (query.IndexOf(".") > 0)
|
|
{
|
|
query = query.Substring(0, query.IndexOf("."));
|
|
}
|
|
|
|
List<string> dataList = [];
|
|
string[] queryDataList = query.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
|
|
if (queryDataList != null && queryDataList.Length > 0)
|
|
{
|
|
foreach (string queryData in queryDataList)
|
|
{
|
|
dataList.Add(System.Web.HttpUtility.UrlDecode(queryData, encoding));
|
|
}
|
|
}
|
|
return dataList;
|
|
}
|
|
/// <summary>
|
|
/// 获取参数字典
|
|
/// </summary>
|
|
/// <param name="url">Url 地址</param>
|
|
/// <returns></returns>
|
|
public static Dictionary<string, string> GetQueryDict(string url)
|
|
{
|
|
return GetQueryDict(url, Encoding.UTF8);
|
|
}
|
|
/// <summary>
|
|
/// 获取参数字典
|
|
/// </summary>
|
|
/// <param name="url">Url 地址</param>
|
|
/// <param name="encoding">编码格式</param>
|
|
/// <returns></returns>
|
|
public static Dictionary<string, string> GetQueryDict(string url, Encoding encoding)
|
|
{
|
|
Uri uri = new(url);
|
|
string query = uri.Query.TrimStart(new char[] { '?' });
|
|
|
|
Dictionary<string, string> dataDict = [];
|
|
string[] queryDataList = query.Split(new string[] { "&" }, StringSplitOptions.RemoveEmptyEntries);
|
|
if (queryDataList != null && queryDataList.Length > 0)
|
|
{
|
|
foreach (string queryData in queryDataList)
|
|
{
|
|
string[] keyValue = queryData.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
|
|
if (!dataDict.ContainsKey(keyValue[0]))
|
|
{
|
|
dataDict.Add(keyValue[0].ToLower(), System.Web.HttpUtility.UrlDecode(keyValue[1], encoding));
|
|
}
|
|
}
|
|
}
|
|
return dataDict;
|
|
}
|
|
#endregion
|
|
}
|