C#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#Url处理类的更多相关文章
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
- URL工具类
UrlUtils = { /** * 判断url是否存在(存在跨域问题) * @param {String} url */ isTrueUrl: function(_url) { result = f ...
- java中的URL InetAddress类
/* * InetAddress类: * 用于标识网络上的硬件资源,表示互联网协议(ip)地址,是java对ip地址的封装. * 其实例对象包含以数字形式保存的IP地址,主机名. * InetAddr ...
- php 对url 操作类:url拼接、get获取页面、post获取页面(带传参)
/* * @brief url封装类,将常用的url请求操作封装在一起 * */ class URL{ private $error; public function __construct(){ $ ...
- 使用URL工具类调用webservice接口(soap)与http接口的实现方式
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...
- ASP.NET @URL帮助类
原文: https://www.cnblogs.com/bobo-show/p/5746389.html https://www.cnblogs.com/zhuji/p/7698057.html ...
- Java 使用URL类通过url下载网络资源
主要用到的类 地址类: URL http类: HttpURLConnection 输入流: InputStream 输出流: FileOutputStream 上代码 package com.demo ...
- JS 工具类
之前工作用的JavaScript比较多,总结了一下工具类,和大家分享一下,有不足之处还请多多见谅!! 1. 数组工具类(arrayUtils) var arrayUtils = {}; (functi ...
- ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)
本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...
随机推荐
- 软工网络16个人作业2——WordCount
Deadline: 2018-9-17 22:00PM,以博客提交至班级博客时间为准 要求参考来自:https://www.cnblogs.com/xinz/archive/2011/11/27/22 ...
- spring的第一天
spring的第一天 ssm框架 spring Spring是什么? Spring是容器框架,用来配置(装)Bean,并且维护Bean之间的关系.其中Bean可以是Java中的任何一种对象,可以是J ...
- webpack4打包报错:WARNING in configuration The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults fo
运行命令webpack ./src/main.js ./dist/murenziwei.js后,目录上神马动静都没有,你以为在dist文件夹上会有murenziwei.js吗?毛都没有 警告和错误倒是 ...
- Java技术开发中的坑
1.(2014/05/28)struts2中使用eclipse自动获取getter和setter方法的坑 今天着实被eclipse坑了一把,平时遇到get和set方法时,我都是通过eclipse自动生 ...
- openssl rsautl和openssl pkeyutl(文件的非对称加密)
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rsautl是rsa的工具,相当于rsa.dgst的部分功能集合,可用于生成 ...
- js------保留指定位数小数
// tofix.js文件// params// val: 要处理的数据,Number | String// len: 保留小数位数,位数不足时,以0填充// side: 1|-1 对应 入|舍exp ...
- [转]来扯点ionic3[7] LocalStorage的使用—以登录和注销为例
本文转自:https://segmentfault.com/a/1190000012146400 一般意义上,一个互联网 APP 中的数据主自与服务器的交互,但是对于有些数据,我们希望获取到它们以后能 ...
- java命令运行带包的类
类文件d:\test2.java package b; public class test2 { public static void main(String[] args) { ...
- c# 封装Dapper操作类
using Dapper; using DapperExtensions; using System.Collections.Generic; using System.Configuration; ...
- oracle sql优化的几种方法
1.最基本最简单的方式是减少访问数据库的次数.oracle在内部执行了许多工作,比如解析SQL语句, 估算索引的利用率, 读数据块等等,都将大量耗费oracle数据库的运行 2.选择最有效率的表名顺 ...