1. 程式人生 > >C#HttpUtility.UrlEncode 大寫問題

C#HttpUtility.UrlEncode 大寫問題

stat col IT AC upper httputil color PE sele

工作上和另一個公司對接,調對方的api需要用到md5加密,加密前要使用HttpUtility.UrlEncode,對方接口一直返回驗證錯誤,定位了問題發現是中文編碼使用HttpUtility.UrlEncode導致的。

C#中HttpUtility.UrlEncode返回的url編碼是小寫的,但對方是大寫的,md5之後得到的hash碼就不一致了,所以需要對HttpUtility.UrlEncode方法進行一層封裝,代碼如下:

        public static string UrlEncode(string str)
        {
            string urlStr = HttpUtility.UrlEncode(str);
            
var urlCode = Regex.Matches(urlStr, "%[a-f0-9]{2}", RegexOptions.Compiled).Cast<Match>().Select(m => m.Value).Distinct(); foreach (string item in urlCode) { urlStr = urlStr.Replace(item, item.ToUpper()); } return urlStr; }

目前的想法是這樣的,有空再來優化一下。

C#HttpUtility.UrlEncode 大寫問題