中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

C#自定義的針對URL地址的處理類

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

這個C#類是專門針對URL網(wǎng)址處理的類,可以對URL地址進行Base64的加密和解密,可以通過函數(shù)的方式向URL添加參數(shù),可以更新URL中 已有參數(shù)的值,分析URL地址的域名、子域名,分析URL的所有參數(shù)和參數(shù)值,功能非常全面,還可以自己擴充,sharejs.com推薦,非常具有實用 價值

using System;
using System.Text.RegularExpressions;
using System.Web;
using System.Collections.Specialized;
 
namespace DotNet.Utilities
{
    /// <summary>
    /// URL的操作類
    /// </summary>
    public class UrlOper
    {
        static System.Text.Encoding encoding = System.Text.Encoding.UTF8;
 
        #region URL的64位編碼
        public static string Base64Encrypt(string sourthUrl)
        {
            string eurl = HttpUtility.UrlEncode(sourthUrl);
            eurl = Convert.ToBase64String(encoding.GetBytes(eurl));
            return eurl;
        }
        #endregion
 
        #region URL的64位解碼
        public static string Base64Decrypt(string eStr)
        {       
            if (!IsBase64(eStr))
            {
                return eStr;
            }
            byte[] buffer = Convert.FromBase64String(eStr);
            string sourthUrl = encoding.GetString(buffer);
            sourthUrl = HttpUtility.UrlDecode(sourthUrl);
            return sourthUrl;
        }
        /// <summary>
        /// 是否是Base64字符串
        /// </summary>
        /// <param name="eStr"></param>
        /// <returns></returns>
        public static bool IsBase64(string eStr)
        {
            if ((eStr.Length % 4) != 0)
            {
                return false;
            }
            if (!Regex.IsMatch(eStr, "^[A-Z0-9/+=]*$", RegexOptions.IgnoreCase))
            {
                return false;
            }
            return true;
        }
        #endregion
 
        /// <summary>
        /// 添加URL參數(shù)
        /// </summary>
        public static string AddParam(string url, string paramName, string value)
        {
            Uri uri = new Uri(url);
            if (string.IsNullOrEmpty(uri.Query))
            {
                string eval = HttpContext.Current.Server.UrlEncode(value);
                return String.Concat(url, "?" + paramName + "=" + eval);
            }
            else
            {
                string eval = HttpContext.Current.Server.UrlEncode(value);
                return String.Concat(url, "&" + paramName + "=" + eval);
            }
        }
        /// <summary>
        /// 更新URL參數(shù)
        /// </summary>
        public static string UpdateParam(string url, string paramName, string value)
        {
            string keyWord = paramName+"=";
            int index = url.IndexOf(keyWord)+keyWord.Length;
            int index1 = url.IndexOf("&", index);
            if (index1 == -1)
            {
                url = url.Remove(index, url.Length - index);
                url = string.Concat(url, value);
                return url;
            }
            url = url.Remove(index,index1 - index);
            url = url.Insert(index, value);
            return url;
        }
 
        #region 分析URL所屬的域
        public static void GetDomain(string fromUrl, out string domain, out string subDomain)
        {
            domain = "";
            subDomain = "";
            try
            {
                if (fromUrl.IndexOf("的名片") > -1)
                {
                    subDomain = fromUrl;
                    domain = "名片";
                    return;
                }
 
                UriBuilder builder = new UriBuilder(fromUrl);
                fromUrl = builder.ToString();
 
                Uri u = new Uri(fromUrl);
 
                if (u.IsWellFormedOriginalString())
                {
                    if (u.IsFile)
                    {
                        subDomain = domain = "客戶端本地文件路徑";
 
                    }
                    else
                    {
                        string Authority = u.Authority;
                        string[] ss = u.Authority.Split('.');
                        if (ss.Length == 2)
                        {
                            Authority = "www." + Authority;
                        }
                        int index = Authority.IndexOf('.', 0);
                        domain = Authority.Substring(index + 1, Authority.Length - index - 1).Replace("comhttp","com");
                        subDomain = Authority.Replace("comhttp", "com");
                        if (ss.Length < 2)
                        {
                            domain = "不明路徑";
                            subDomain = "不明路徑";
                        }
                    }
                }
                else
                {
                    if (u.IsFile)
                    {
                        subDomain = domain = "客戶端本地文件路徑";
                    }
                    else
                    {
                        subDomain = domain = "不明路徑";
                    }
                }
            }
            catch
            {
                subDomain = domain = "不明路徑";
            }
        }
 
        /// <summary>
        /// 分析 url 字符串中的參數(shù)信息。sharejs.com
        /// </summary>
        /// <param name="url">輸入的 URL</param>
        /// <param name="baseUrl">輸出 URL 的基礎(chǔ)部分</param>
        /// <param name="nvc">輸出分析后得到的 (參數(shù)名,參數(shù)值) 的集合</param>
        public static void ParseUrl(string url, out string baseUrl, out NameValueCollection nvc)
        {
            if (url == null)
                throw new ArgumentNullException("url");
 
            nvc = new NameValueCollection();
            baseUrl = "";
 
            if (url == "")
                return;
 
            int questionMarkIndex = url.IndexOf('?');
 
            if (questionMarkIndex == -1)
            {
                baseUrl = url;
                return;
            }
            baseUrl = url.Substring(0, questionMarkIndex);
            if (questionMarkIndex == url.Length - 1)
                return;
            string ps = url.Substring(questionMarkIndex + 1);
 
            // 開始分析參數(shù)對   
            Regex re = new Regex(@"(^|&)?(\w+)=([^&]+)(&|$)?", RegexOptions.Compiled);
            MatchCollection mc = re.Matches(ps);
 
            foreach (Match m in mc)
            {
                nvc.Add(m.Result("$2").ToLower(), m.Result("$3"));
            }
        }
 
        #endregion
    }
}
 

標簽: 域名 子域名

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:C#封裝好的Ftp客戶端代碼類

下一篇:IOS中強大的網(wǎng)絡(luò)通信類庫AFNetworking使用示例