C#自定义针对URL地址的处理类实例

本文实例讲述了C#自定义针对URL地址的处理类。分享给大家供大家参考。具体分析如下:

这个C#类是专门针对URL网址处理的类,可以对URL地址进行Base64的加密和解密,可以通过函数的方式向URL添加参数,可以更新URL中已有参数的值,分析URL地址的域名、子域名,分析URL的所有参数和参数值,功能非常全面,还可以自己扩充,非常具有实用价值

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参数
    /// </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参数
    /// </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 字符串中的参数信息。
    /// </summary>
    /// <param name="url">输入的 URL</param>
    /// <param name="baseUrl">输出 URL 的基础部分</param>
    /// <param name="nvc">输出分析后得到的 (参数名,参数值) 的集合</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);
      // 开始分析参数对
      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
  }
}

希望本文所述对大家的C#程序设计有所帮助。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#自定义针对URL地址的处理类实例

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23057.html

相关内容

C#中增加SQLite事务操作支持与使用方法

C# 设计模式系列教程-状态模式

C# 函数覆盖总结学习(推荐)

浅谈C#指针问题


总结的5个C#字符串操作方法分享

C#判断指定分区是否是ntfs格式的方法

unity实现多点触控代码

理解C#中的事件

时间: 2024-11-09 02:16:12

C#自定义针对URL地址的处理类实例的相关文章

C# 自定义的针对URL地址的处理类

专门针对URL网址处理的类,可以对URL地址进行Base64的加密和解密,可以通过函数的方式向URL添加参数,可以更新URL中 已有参数的值,分析URL地址的域名.子域名,分析URL的所有参数和参数值,功能非常全面,还可以自己扩充,sharejs.com推荐,非常具有实用 价值 using System; using System.Text.RegularExpressions; using System.Web; using System.Collections.Specialized; na

转:Web页面通过URL地址传递参数常见问题及检测方法

Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述其实现原理.特点和常见问题,最后介绍检测该方式常见应用问题的测试思路和方法. 1.web页面的概念 Web是internet上一个非常重要的资源信息网,产生于20世纪90年代初,它遵循超文本传输协议,以超文本或超媒介的形式传送各种各样的信息,为用户提供了一个具有友好的图形化界面--Web页面,以便用

自定义 404 与 500 错误页面,URL 地址不会重定向。

对于 404 与 500 错误发生时,我们希望自己定义一个更加人性化的页面. 例子 当访问下面这个地址时: http://localhost/aaaa/bbb/ccc/ddd/eee/fff/ggg 浏览器的 URL 不变,依然是 http://localhost/aaaa/bbb/ccc/ddd/eee/fff/ggg 但页面显示的是我们自定义的错误页面. 一.在 web.config 里增加以下节点. <system.webServer> <httpErrors errorMode=

C# HttpWebRequest 绝技 根据URL地址获取网页信息

如果要使用中间的方法的话,可以访问我的帮助类完全免费开源:C# HttpHelper,帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取 1.第一招,根据URL地址获取网页信息 先来看一下代码 get方法 复制代码 publicstaticstring GetUrltoHtml(string Url,string type) { try { System.Net.WebRequest wReq = System.Net.WebRequest.Create(U

URL地址中中文乱码详解(javascript中encodeURI和decodeURI方法、java.net.URLDecoder.encode、java.net.URLDecoder.decode)

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取. 2. 乱码是如

URL地址中的中文乱码问题的解决

引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址. 但是,在实际的开发和使用中,确是有乱码情况的发生,在后台的读取keyword信息为乱码,无法正确读取. 2. 乱码是如

zabbix增加手机端4个url地址的返回值

由同事提供4个需要监控的url地址 GET类型: http://10.15.24.61:809/UserCenterService.svc/getAccountInfo/563/9638 POST类型: http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/4/0/563/1/9638/1.0 http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/3/0

Dynamic CRM 2015学习笔记(4)修改开发人员资源(发现服务、组织服务和组织数据服务)url地址及组织名

在azure vm上安装了CRM 2015后 Dynamic CRM 2015学习笔记(1)Azure 上安装 CRM 2015, 发现了一个问题,那就是在设置 ->自定义项 –> 开发人员资源 里面的几个ulr(发现服务.组织服务和组织数据服务)都不对,显示的都是http://机器名/XRMServices/2011/ -, 但这个url是访问不了的,正确的url应该是 http://xxx.cloudapp.net/XRMServices/2011/ - 下面介绍如何修改成正确的url.

URL地址中使用中文作为的参数【转】

原文:http://blog.csdn.net/blueheart20/article/details/43766713 引言: 在Restful类的服务设计中,经常会碰到需要在URL地址中使用中文作为的参数的情况,这种情况下,一般都需要正确的设置和编码中文字符信息.乱码问题就此产生了,该如何解决呢?且听本文详细道来. 1.  问题的引出 在Restful的服务设计中,查询某些信息的时候,一般的URL地址设计为: get /basic/service? keyword=历史 , 之类的URL地址