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

{3
static System.Text.Encoding encoding = System.Text.Encoding.UTF8;4

5

URL的64位编码#region URL的64位编码6
public static string Base64Encrypt(string sourthUrl)7

{8
string eurl = HttpUtility.UrlEncode(sourthUrl);9
eurl = Convert.ToBase64String(encoding.GetBytes(eurl));10
return eurl;11
}12
#endregion13

14

URL的64位解码#region URL的64位解码15
public static string Base64Decrypt(string eStr)16

{ 17
if (!IsBase64(eStr))18

{19
return eStr;20
}21
byte[] buffer = Convert.FromBase64String(eStr);22
string sourthUrl = encoding.GetString(buffer);23
sourthUrl = HttpUtility.UrlDecode(sourthUrl);24
return sourthUrl;25
}26

/**//// <summary>27
/// 是否是Base64字符串28
/// </summary>29
/// <param name="eStr"></param>30
/// <returns></returns>31
public static bool IsBase64(string eStr)32

{33
if ((eStr.Length % 4) != 0)34

{35
return false;36
}37
if (!Regex.IsMatch(eStr, "^[A-Z0-9/+=]*$", RegexOptions.IgnoreCase))38

{39
return false;40
}41
return true;42
}43
#endregion44

45

/**//// <summary>46
/// 添加URL参数47
/// </summary>48
public static string AddParam(string url, string paramName, string value)49

{50
Uri uri = new Uri(url);51
if (string.IsNullOrEmpty(uri.Query))52

{53
string eval = HttpContext.Current.Server.UrlEncode(value);54
return String.Concat(url, "?" + paramName + "=" + eval);55
}56
else57

{58
string eval = HttpContext.Current.Server.UrlEncode(value);59
return String.Concat(url, "&" + paramName + "=" + eval);60
}61
}62

/**//// <summary>63
/// 更新URL参数64
/// </summary>65
public static string UpdateParam(string url, string paramName, string value)66

{67
string keyWord = paramName+"=";68
int index = url.IndexOf(keyWord)+keyWord.Length;69
int index1 = url.IndexOf("&", index);70
if (index1 == -1)71

{72
url = url.Remove(index, url.Length - index);73
url = string.Concat(url, value);74
return url;75
}76
url = url.Remove(index,index1 - index);77
url = url.Insert(index, value);78
return url;79
}80

81

分析URL所属的域#region 分析URL所属的域82
public static void GetDomain(string fromUrl, out string domain, out string subDomain)83

{84
domain = "";85
subDomain = "";86
try87

{88
if (fromUrl.IndexOf("的名片") > -1)89

{90
subDomain = fromUrl;91
domain = "名片";92
return;93
}94

95
UriBuilder builder = new UriBuilder(fromUrl);96
fromUrl = builder.ToString();97

98
Uri u = new Uri(fromUrl);99

100
if (u.IsWellFormedOriginalString())101

{102
if (u.IsFile)103

{104
subDomain = domain = "客户端本地文件路径";105

106
}107
else108

{109
string Authority = u.Authority;110
string[] ss = u.Authority.Split('.');111
if (ss.Length == 2)112

{113
Authority = "www." + Authority;114
}115
int index = Authority.IndexOf('.', 0);116
domain = Authority.Substring(index + 1, Authority.Length - index - 1).Replace("comhttp","com");117
subDomain = Authority.Replace("comhttp", "com"); 118
if (ss.Length < 2)119

{120
domain = "不明路径";121
subDomain = "不明路径";122
}123
}124
}125
else126

{127
if (u.IsFile)128

{129
subDomain = domain = "客户端本地文件路径";130
}131
else132

{133
subDomain = domain = "不明路径";134
}135
}136
}137
catch138

{139
subDomain = domain = "不明路径";140
}141
}142

143

/**//// <summary>144
/// 分析 url 字符串中的参数信息145
/// </summary>146
/// <param name="url">输入的 URL</param>147
/// <param name="baseUrl">输出 URL 的基础部分</param>148
/// <param name="nvc">输出分析后得到的 (参数名,参数值) 的集合</param>149
public static void ParseUrl(string url, out string baseUrl, out NameValueCollection nvc)150

{151
if (url == null)152
throw new ArgumentNullException("url");153

154
nvc = new NameValueCollection();155
baseUrl = "";156

157
if (url == "")158
return;159

160
int questionMarkIndex = url.IndexOf('?');161

162
if (questionMarkIndex == -1)163

{164
baseUrl = url;165
return;166
}167
baseUrl = url.Substring(0, questionMarkIndex);168
if (questionMarkIndex == url.Length - 1)169
return;170
string ps = url.Substring(questionMarkIndex + 1);171

172
// 开始分析参数对 173
Regex re = new Regex(@"(^|&)?(\w+)=([^&]+)(&|$)?", RegexOptions.Compiled);174
MatchCollection mc = re.Matches(ps);175

176
foreach (Match m in mc)177

{178
nvc.Add(m.Result("$2").ToLower(), m.Result("$3"));179
}180
}181

182
#endregion183
}