

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
}

2



3

4

5


6

7



8

9

10

11

12

13

14


15

16



17

18



19

20

21

22

23

24

25

26


27

28

29

30

31

32



33

34



35

36

37

38



39

40

41

42

43

44

45


46

47

48

49



50

51

52



53

54

55

56

57



58

59

60

61

62


63

64

65

66



67

68

69

70

71



72

73

74

75

76

77

78

79

80

81


82

83



84

85

86

87



88

89



90

91

92

93

94

95

96

97

98

99

100

101



102

103



104

105

106

107

108



109

110

111

112



113

114

115

116

117

118

119



120

121

122

123

124

125

126



127

128



129

130

131

132



133

134

135

136

137

138



139

140

141

142

143


144

145

146

147

148

149

150



151

152

153

154

155

156

157

158

159

160

161

162

163



164

165

166

167

168

169

170

171

172

173

174

175

176

177



178

179

180

181

182

183
