专注

导航

URL的操作类

   1:      /// <summary>
   2:      /// URL的操作类
   3:      /// </summary>
   4:      public class UrlOper
   5:      {
   6:          static System.Text.Encoding encoding = System.Text.Encoding.UTF8;
   7:   
   8:          #region URL的64位编码
   9:          public static string Base64Encrypt(string sourthUrl)
  10:          {
  11:              string eurl = HttpUtility.UrlEncode(sourthUrl);
  12:              eurl = Convert.ToBase64String(encoding.GetBytes(eurl));
  13:              return eurl;
  14:          }
  15:          #endregion
  16:   
  17:          #region URL的64位解码
  18:          public static string Base64Decrypt(string eStr)
  19:          {        
  20:              if (!IsBase64(eStr))
  21:              {
  22:                  return eStr;
  23:              }
  24:              byte[] buffer = Convert.FromBase64String(eStr);
  25:              string sourthUrl = encoding.GetString(buffer);
  26:              sourthUrl = HttpUtility.UrlDecode(sourthUrl);
  27:              return sourthUrl;
  28:          }
  29:          /// <summary>
  30:          /// 是否是Base64字符串
  31:          /// </summary>
  32:          /// <param name="eStr"></param>
  33:          /// <returns></returns>
  34:          public static bool IsBase64(string eStr)
  35:          {
  36:              if ((eStr.Length % 4) != 0)
  37:              {
  38:                  return false;
  39:              }
  40:              if (!Regex.IsMatch(eStr, "^[A-Z0-9/+=]*$", RegexOptions.IgnoreCase))
  41:              {
  42:                  return false;
  43:              }
  44:              return true;
  45:          }
  46:          #endregion
  47:   
  48:          /// <summary>
  49:          /// 添加URL参数
  50:          /// </summary>
  51:          public static string AddParam(string url, string paramName, string value)
  52:          {
  53:              Uri uri = new Uri(url);
  54:              if (string.IsNullOrEmpty(uri.Query))
  55:              {
  56:                  string eval = HttpContext.Current.Server.UrlEncode(value);
  57:                  return String.Concat(url, "?" + paramName + "=" + eval);
  58:              }
  59:              else
  60:              {
  61:                  string eval = HttpContext.Current.Server.UrlEncode(value);
  62:                  return String.Concat(url, "&" + paramName + "=" + eval);
  63:              }
  64:          }
  65:          /// <summary>
  66:          /// 更新URL参数
  67:          /// </summary>
  68:          public static string UpdateParam(string url, string paramName, string value)
  69:          {
  70:              string keyWord = paramName+"=";
  71:              int index = url.IndexOf(keyWord)+keyWord.Length;
  72:              int index1 = url.IndexOf("&", index);
  73:              if (index1 == -1)
  74:              {
  75:                  url = url.Remove(index, url.Length - index);
  76:                  url = string.Concat(url, value);
  77:                  return url;
  78:              }
  79:              url = url.Remove(index,index1 - index);
  80:              url = url.Insert(index, value);
  81:              return url;
  82:          }
  83:   
  84:          #region 分析URL所属的域
  85:          public static void GetDomain(string fromUrl, out string domain, out string subDomain)
  86:          {
  87:              domain = "";
  88:              subDomain = "";
  89:              try
  90:              {
  91:                  if (fromUrl.IndexOf("的名片") > -1)
  92:                  {
  93:                      subDomain = fromUrl;
  94:                      domain = "名片";
  95:                      return;
  96:                  }
  97:   
  98:                  UriBuilder builder = new UriBuilder(fromUrl);
  99:                  fromUrl = builder.ToString();
 100:   
 101:                  Uri u = new Uri(fromUrl);
 102:   
 103:                  if (u.IsWellFormedOriginalString())
 104:                  {
 105:                      if (u.IsFile)
 106:                      {
 107:                          subDomain = domain = "客户端本地文件路径";
 108:   
 109:                      }
 110:                      else
 111:                      {
 112:                          string Authority = u.Authority;
 113:                          string[] ss = u.Authority.Split('.');
 114:                          if (ss.Length == 2)
 115:                          {
 116:                              Authority = "www." + Authority;
 117:                          }
 118:                          int index = Authority.IndexOf('.', 0);
 119:                          domain = Authority.Substring(index + 1, Authority.Length - index - 1).Replace("comhttp","com");
 120:                          subDomain = Authority.Replace("comhttp", "com"); 
 121:                          if (ss.Length < 2)
 122:                          {
 123:                              domain = "不明路径";
 124:                              subDomain = "不明路径";
 125:                          }
 126:                      }
 127:                  }
 128:                  else
 129:                  {
 130:                      if (u.IsFile)
 131:                      {
 132:                          subDomain = domain = "客户端本地文件路径";
 133:                      }
 134:                      else
 135:                      {
 136:                          subDomain = domain = "不明路径";
 137:                      }
 138:                  }
 139:              }
 140:              catch
 141:              {
 142:                  subDomain = domain = "不明路径";
 143:              }
 144:          }
 145:   
 146:          /// <summary>
 147:          /// 分析 url 字符串中的参数信息
 148:          /// </summary>
 149:          /// <param name="url">输入的 URL</param>
 150:          /// <param name="baseUrl">输出 URL 的基础部分</param>
 151:          /// <param name="nvc">输出分析后得到的 (参数名,参数值) 的集合</param>
 152:          public static void ParseUrl(string url, out string baseUrl, out NameValueCollection nvc)
 153:          {
 154:              if (url == null)
 155:                  throw new ArgumentNullException("url");
 156:   
 157:              nvc = new NameValueCollection();
 158:              baseUrl = "";
 159:   
 160:              if (url == "")
 161:                  return;
 162:   
 163:              int questionMarkIndex = url.IndexOf('?');
 164:   
 165:              if (questionMarkIndex == -1)
 166:              {
 167:                  baseUrl = url;
 168:                  return;
 169:              }
 170:              baseUrl = url.Substring(0, questionMarkIndex);
 171:              if (questionMarkIndex == url.Length - 1)
 172:                  return;
 173:              string ps = url.Substring(questionMarkIndex + 1);
 174:   
 175:              // 开始分析参数对    
 176:              Regex re = new Regex(@"(^|&)?(\w+)=([^&]+)(&|$)?", RegexOptions.Compiled);
 177:              MatchCollection mc = re.Matches(ps);
 178:   
 179:              foreach (Match m in mc)
 180:              {
 181:                  nvc.Add(m.Result("$2").ToLower(), m.Result("$3"));
 182:              }
 183:          }
 184:   
 185:          #endregion
 186:      }

posted on 2011-11-13 11:51  陈啊M  阅读(300)  评论(0编辑  收藏  举报