鄂尔多斯-招源科技

RequestString.cs 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
  1. using System;
  2. using System.Globalization;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. using System.Web;
  7. using System.Net;
  8. using System.IO;
  9. namespace CallCenter.Utility
  10. {
  11. /// <summary>
  12. /// 页面获取数据类
  13. /// </summary>
  14. public class RequestString
  15. {
  16. /// <summary>
  17. /// 判断当前页面是否接收到了Post请求
  18. /// </summary>
  19. /// <returns>是否接收到了Post请求</returns>
  20. public static bool IsPost()
  21. {
  22. return HttpContext.Current.Request.HttpMethod.Equals("POST");
  23. }
  24. /// <summary>
  25. /// 判断当前页面是否接收到了Get请求
  26. /// </summary>
  27. /// <returns>是否接收到了Get请求</returns>
  28. public static bool IsGet()
  29. {
  30. return HttpContext.Current.Request.HttpMethod.Equals("GET");
  31. }
  32. /// <summary>
  33. /// 返回URL中结尾的文件名
  34. /// </summary>
  35. public static string GetFilename(string url)
  36. {
  37. if (url == null)
  38. {
  39. return "";
  40. }
  41. string[] strs1 = url.Split(new[] { '/' });
  42. return strs1[strs1.Length - 1].Split(new[] { '?' })[0];
  43. }
  44. /// <summary>
  45. /// 返回指定的服务器变量信息
  46. /// </summary>
  47. /// <param name="strName">服务器变量名</param>
  48. /// <returns>服务器变量信息</returns>
  49. public static string GetServerString(string strName)
  50. {
  51. if (HttpContext.Current.Request.ServerVariables[strName] == null)
  52. return "";
  53. return HttpContext.Current.Request.ServerVariables[strName];
  54. }
  55. /// <summary>
  56. /// 返回上一个页面的地址
  57. /// </summary>
  58. /// <returns>上一个页面的地址</returns>
  59. public static string GetUrlReferrer()
  60. {
  61. string retVal = null;
  62. try
  63. {
  64. if (HttpContext.Current.Request.UrlReferrer != null)
  65. retVal = HttpContext.Current.Request.UrlReferrer.ToString();
  66. }
  67. catch (Exception)
  68. { }
  69. if (retVal == null)
  70. return "";
  71. return retVal;
  72. }
  73. /// <summary>
  74. /// 得到当前完整主机头
  75. /// </summary>
  76. /// <returns></returns>
  77. public static string GetCurrentFullHost()
  78. {
  79. HttpRequest request = HttpContext.Current.Request;
  80. if (!request.Url.IsDefaultPort)
  81. return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString(CultureInfo.InvariantCulture));
  82. return request.Url.Host;
  83. }
  84. /// <summary>
  85. /// 得到主机头
  86. /// </summary>
  87. /// <returns></returns>
  88. public static string GetHost()
  89. {
  90. return HttpContext.Current.Request.Url.Host;
  91. }
  92. /// <summary>
  93. /// 得到主机名
  94. /// </summary>
  95. public static string GetDnsSafeHost()
  96. {
  97. return HttpContext.Current.Request.Url.DnsSafeHost;
  98. }
  99. /// <summary>
  100. /// 获取当前请求的原始 URL(URL 中域信息之后的部分,包括查询字符串(如果存在))
  101. /// </summary>
  102. /// <returns>原始 URL</returns>
  103. public static string GetRawUrl()
  104. {
  105. return HttpContext.Current.Request.RawUrl;
  106. }
  107. /// <summary>
  108. /// 判断当前访问是否来自浏览器软件
  109. /// </summary>
  110. /// <returns>当前访问是否来自浏览器软件</returns>
  111. public static bool IsBrowserGet()
  112. {
  113. string[] BrowserName = { "ie", "opera", "netscape", "mozilla", "konqueror", "firefox" };
  114. string curBrowser = HttpContext.Current.Request.Browser.Type.ToLower();
  115. return BrowserName.Any(t => curBrowser.IndexOf(t, StringComparison.Ordinal) >= 0);
  116. }
  117. /// <summary>
  118. /// 判断是否来自搜索引擎链接
  119. /// </summary>
  120. /// <returns>是否来自搜索引擎链接</returns>
  121. public static bool IsSearchEnginesGet()
  122. {
  123. if (HttpContext.Current.Request.UrlReferrer == null)
  124. return false;
  125. string[] SearchEngine = { "google", "yahoo", "msn", "baidu", "sogou", "sohu", "sina", "163", "lycos", "tom", "yisou", "iask", "soso", "gougou", "zhongsou" };
  126. string tmpReferrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLower();
  127. return SearchEngine.Any(t => tmpReferrer.IndexOf(t, StringComparison.Ordinal) >= 0);
  128. }
  129. /// <summary>
  130. /// 获得当前完整Url地址
  131. /// </summary>
  132. /// <returns>当前完整Url地址</returns>
  133. public static string GetUrl()
  134. {
  135. return HttpContext.Current.Request.Url.ToString();
  136. }
  137. /// <summary>
  138. /// 获取文件
  139. /// </summary>
  140. /// <param name="strName"></param>
  141. /// <returns></returns>
  142. public static HttpPostedFile GetFile(string strName)
  143. {
  144. return HttpContext.Current.Request.Files[strName];
  145. }
  146. /// <summary>
  147. /// 获取stream
  148. /// </summary>
  149. /// <returns></returns>
  150. public static Stream GetInputStream()
  151. {
  152. return HttpContext.Current.Request.InputStream;
  153. }
  154. /// <summary>
  155. /// 获得指定Url参数的值
  156. /// </summary>
  157. /// <param name="strName">Url参数</param>
  158. /// <returns>Url参数的值</returns>
  159. public static string GetQueryString(string strName)
  160. {
  161. return GetQueryString(strName, false);
  162. }
  163. /// <summary>
  164. /// 获得指定Url参数的值
  165. /// </summary>
  166. /// <param name="strName">Url参数</param>
  167. /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
  168. /// <returns>Url参数的值</returns>
  169. public static string GetQueryString(string strName, bool sqlSafeCheck)
  170. {
  171. if (HttpContext.Current.Request.QueryString[strName] == null)
  172. return "";
  173. if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.QueryString[strName]))
  174. return "";
  175. return HttpContext.Current.Request.QueryString[strName];
  176. }
  177. /// <summary>
  178. /// 获得指定Url参数的值
  179. /// </summary>
  180. /// <param name="strName">Url参数</param>
  181. /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
  182. /// <param name="defValue">当SQL安全检查不通过或无值时的默认值</param>
  183. /// <returns>Url参数的值</returns>
  184. public static string GetQueryString(string strName, bool sqlSafeCheck, string defValue)
  185. {
  186. if (HttpContext.Current.Request.QueryString[strName] == null)
  187. return defValue;
  188. if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.QueryString[strName]))
  189. return defValue;
  190. return HttpContext.Current.Request.QueryString[strName];
  191. }
  192. /// <summary>
  193. /// SQL危险字符过滤
  194. /// </summary>
  195. /// <param name="source">要过滤的字符串</param>
  196. /// <param name="SafeLevel">安全级别{1最高}</param>
  197. /// <returns></returns>
  198. public static string FilterSql(string source, int SafeLevel)
  199. {
  200. //单引号替换成两个单引号
  201. source = source.Replace("'", "''");
  202. source = source.Replace("--", "--");
  203. if (SafeLevel == 1)
  204. {
  205. //单引号替换成两个单引号
  206. source = source.Replace("\"", "“");
  207. source = source.Replace("|", "|");
  208. //半角封号替换为全角封号,防止多语句执行
  209. source = source.Replace(";", ";");
  210. source = source.Replace("=", "=");
  211. //半角括号替换为全角括号
  212. source = source.Replace("(", "(");
  213. source = source.Replace(")", ")");
  214. }
  215. return source;
  216. }
  217. /// <summary>
  218. /// 检测是否有Sql危险字符
  219. /// </summary>
  220. /// <param name="str">要判断字符串</param>
  221. /// <returns>判断结果</returns>
  222. public static bool IsSafeSqlString(string str)
  223. {
  224. return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");
  225. }
  226. /// <summary>
  227. /// 检测是否有危险的可能用于链接的字符串
  228. /// </summary>
  229. /// <param name="str">要判断字符串</param>
  230. /// <returns>判断结果</returns>
  231. public static bool IsSafeUserInfoString(string str)
  232. {
  233. return !Regex.IsMatch(str, @"^\s*$|^c:\\con\\con$|[%,\*" + "\"" + @"\s\t\<\>\&]|游客|^Guest");
  234. }
  235. /// <summary>
  236. /// 获得当前页面的名称
  237. /// </summary>
  238. /// <returns>当前页面的名称</returns>
  239. public static string GetPageName()
  240. {
  241. string[] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
  242. return urlArr[urlArr.Length - 1].ToLower();
  243. }
  244. /// <summary>
  245. /// 返回表单或Url参数的总个数
  246. /// </summary>
  247. /// <returns></returns>
  248. public static int GetParamCount()
  249. {
  250. return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;
  251. }
  252. /// <summary>
  253. /// 获得指定表单参数的值
  254. /// </summary>
  255. /// <param name="strName">表单参数</param>
  256. /// <returns>表单参数的值</returns>
  257. public static string GetFormString(string strName)
  258. {
  259. return GetFormString(strName, false);
  260. }
  261. /// <summary>
  262. /// 获得指定表单参数的值
  263. /// </summary>
  264. /// <param name="strName">表单参数</param>
  265. /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
  266. /// <returns>表单参数的值</returns>
  267. public static string GetFormString(string strName, bool sqlSafeCheck)
  268. {
  269. if (HttpContext.Current.Request.Form[strName] == null)
  270. return "";
  271. if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.Form[strName]))
  272. return "";
  273. return HttpContext.Current.Request.Form[strName];
  274. }
  275. /// <summary>
  276. /// 获得指定表单参数的值
  277. /// </summary>
  278. /// <param name="strName">表单参数</param>
  279. /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
  280. /// <param name="defValue">当SQL安全检查不通过或无值时的默认值</param>
  281. /// <returns>表单参数的值</returns>
  282. public static string GetFormString(string strName, bool sqlSafeCheck, string defValue)
  283. {
  284. if (HttpContext.Current.Request.Form[strName] == null)
  285. return defValue;
  286. if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.Form[strName]))
  287. return defValue;
  288. return HttpContext.Current.Request.Form[strName];
  289. }
  290. /// <summary>
  291. /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
  292. /// </summary>
  293. /// <param name="strName">参数</param>
  294. /// <returns>Url或表单参数的值</returns>
  295. public static string GetString(string strName)
  296. {
  297. return GetString(strName, false);
  298. }
  299. /// <summary>
  300. /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
  301. /// </summary>
  302. /// <param name="strName">参数</param>
  303. /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
  304. /// <returns>Url或表单参数的值</returns>
  305. public static string GetString(string strName, bool sqlSafeCheck)
  306. {
  307. if ("".Equals(GetQueryString(strName)))
  308. return GetFormString(strName, sqlSafeCheck);
  309. return GetQueryString(strName, sqlSafeCheck);
  310. }
  311. /// <summary>
  312. /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
  313. /// </summary>
  314. /// <param name="strName">参数</param>
  315. /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
  316. /// <param name="defValue">当SQL安全检查不通过或无值时的默认值</param>
  317. /// <returns>Url或表单参数的值</returns>
  318. public static string GetString(string strName, bool sqlSafeCheck, string defValue)
  319. {
  320. if ("".Equals(GetQueryString(strName)))
  321. return GetFormString(strName, sqlSafeCheck, defValue);
  322. return GetQueryString(strName, sqlSafeCheck, defValue);
  323. }
  324. /// <summary>
  325. /// 获得指定Url参数的int类型值
  326. /// </summary>
  327. /// <param name="strName">Url参数</param>
  328. /// <returns>Url参数的int类型值</returns>
  329. public static int GetQueryInt(string strName)
  330. {
  331. return TypeConverter.StrToInt(HttpContext.Current.Request.QueryString[strName], 0);
  332. }
  333. /// <summary>
  334. /// 获得指定Url参数的int类型值
  335. /// </summary>
  336. /// <param name="strName">Url参数</param>
  337. /// <param name="defValue">缺省值</param>
  338. /// <returns>Url参数的int类型值</returns>
  339. public static int GetQueryInt(string strName, int defValue)
  340. {
  341. return TypeConverter.StrToInt(HttpContext.Current.Request.QueryString[strName], defValue);
  342. }
  343. /// <summary>
  344. /// 获得指定表单参数的int类型值
  345. /// </summary>
  346. /// <param name="strName">表单参数</param>
  347. /// <param name="defValue">缺省值</param>
  348. /// <returns>表单参数的int类型值</returns>
  349. public static int GetFormInt(string strName, int defValue)
  350. {
  351. return TypeConverter.StrToInt(HttpContext.Current.Request.Form[strName], defValue);
  352. }
  353. /// <summary>
  354. /// 获得指定Url或表单参数的int类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
  355. /// </summary>
  356. /// <param name="strName">Url或表单参数</param>
  357. /// <param name="defValue">缺省值</param>
  358. /// <returns>Url或表单参数的int类型值</returns>
  359. public static int GetInt(string strName, int defValue)
  360. {
  361. if (GetQueryInt(strName, defValue) == defValue)
  362. return GetFormInt(strName, defValue);
  363. return GetQueryInt(strName, defValue);
  364. }
  365. /// <summary>
  366. /// 获得指定Url参数的float类型值
  367. /// </summary>
  368. /// <param name="strName">Url参数</param>
  369. /// <param name="defValue">缺省值</param>
  370. /// <returns>Url参数的int类型值</returns>
  371. public static float GetQueryFloat(string strName, float defValue)
  372. {
  373. return TypeConverter.StrToFloat(HttpContext.Current.Request.QueryString[strName], defValue);
  374. }
  375. /// <summary>
  376. /// 获得指定表单参数的float类型值
  377. /// </summary>
  378. /// <param name="strName">表单参数</param>
  379. /// <param name="defValue">缺省值</param>
  380. /// <returns>表单参数的float类型值</returns>
  381. public static float GetFormFloat(string strName, float defValue)
  382. {
  383. return TypeConverter.StrToFloat(HttpContext.Current.Request.Form[strName], defValue);
  384. }
  385. /// <summary>
  386. /// 获得指定Url或表单参数的float类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
  387. /// </summary>
  388. /// <param name="strName">Url或表单参数</param>
  389. /// <param name="defValue">缺省值</param>
  390. /// <returns>Url或表单参数的int类型值</returns>
  391. public static float GetFloat(string strName, float defValue)
  392. {
  393. if (GetQueryFloat(strName, defValue) == defValue)
  394. return GetFormFloat(strName, defValue);
  395. return GetQueryFloat(strName, defValue);
  396. }
  397. /// <summary>
  398. /// 获得当前页面客户端的IP
  399. /// </summary>
  400. /// <returns>当前页面客户端的IP</returns>
  401. public static string GetIP()
  402. {
  403. string result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
  404. if (string.IsNullOrEmpty(result))
  405. result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
  406. if (string.IsNullOrEmpty(result))
  407. result = HttpContext.Current.Request.UserHostAddress;
  408. if (string.IsNullOrEmpty(result) || !ValidateString.IsIP(result))
  409. return "127.0.0.1";
  410. return result;
  411. }
  412. /// <summary>
  413. /// 获取URL地址的网页内容
  414. /// </summary>
  415. public class GetUrlText
  416. {
  417. /// <summary>
  418. /// Gets the text.
  419. /// </summary>
  420. /// <param name="url">地址 The URL.</param>
  421. /// <param name="Encoding">编码 The encoding.</param>
  422. /// <returns></returns>
  423. public static string GetText(string url, string Encoding)
  424. {
  425. WebResponse wr_result = null;
  426. var txthtml = new StringBuilder();
  427. try
  428. {
  429. WebRequest wr_req = WebRequest.Create(url);
  430. wr_result = wr_req.GetResponse();
  431. Stream ReceiveStream = wr_result.GetResponseStream();
  432. Encoding encode = System.Text.Encoding.GetEncoding(Encoding);
  433. var sr = new StreamReader(ReceiveStream, encode);
  434. if (true)
  435. {
  436. var read = new Char[256];
  437. int count = sr.Read(read, 0, 256);
  438. while (count > 0)
  439. {
  440. var str = new String(read, 0, count);
  441. txthtml.Append(str);
  442. count = sr.Read(read, 0, 256);
  443. }
  444. }
  445. }
  446. catch (Exception)
  447. {
  448. txthtml.Append("err");
  449. }
  450. finally
  451. {
  452. if (wr_result != null)
  453. {
  454. wr_result.Close();
  455. }
  456. }
  457. return txthtml.ToString();
  458. }
  459. public static string GetText(string HttpUrl)
  460. {
  461. try
  462. {
  463. HttpHelper http = new HttpHelper();
  464. HttpItem item = new HttpItem()
  465. {
  466. URL = HttpUrl,//URL 必需项
  467. Method = "get",//URL 可选项 默认为Get
  468. IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
  469. Cookie = "",//字符串Cookie 可选项
  470. Referer = "",//来源URL 可选项
  471. Postdata = "",//Post数据 可选项GET时不需要写
  472. Timeout = 100000,//连接超时时间 可选项默认为100000
  473. ReadWriteTimeout = 30000,//写入Post数据超时时间 可选项默认为30000
  474. ContentType = "text/html",//返回类型 可选项有默认值
  475. Allowautoredirect = false,//是否根据301跳转 可选项
  476. //CerPath = "d:\123.cer",//证书绝对路径 可选项不需要证书时可以不写这个参数
  477. //Connectionlimit = 1024,//最大连接数 可选项 默认为1024
  478. ProxyIp = "",//代理服务器ID 可选项 不需要代理 时可以不设置这三个参数
  479. //ProxyPwd = "123456",//代理服务器密码 可选项
  480. //ProxyUserName = "administrator",//代理服务器账户名 可选项
  481. };
  482. var result = http.GetHtml(item);
  483. string html = result.Html;
  484. return html;
  485. //var request = (HttpWebRequest)HttpWebRequest.Create(HttpUrl);
  486. //var response = (HttpWebResponse)request.GetResponse();
  487. //var strConfig = String.Empty;
  488. //using (var reader = new StreamReader(response.GetResponseStream()))
  489. //{
  490. // strConfig = reader.ReadToEnd();
  491. //}
  492. //return strConfig;
  493. }
  494. catch (Exception)
  495. {
  496. return "";
  497. }
  498. }
  499. }
  500. /// 转全角的函数(SBC case)
  501. ///
  502. ///任意字符串
  503. ///全角字符串
  504. ///
  505. ///全角空格为12288,半角空格为32
  506. ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
  507. ///
  508. public static String ToSBC(String input)
  509. {
  510. // 半角转全角:
  511. char[] c = input.ToCharArray();
  512. for (int i = 0; i < c.Length; i++)
  513. {
  514. if (c[i] == 32)
  515. {
  516. c[i] = (char)12288;
  517. continue;
  518. }
  519. if (c[i] < 127)
  520. c[i] = (char)(c[i] + 65248);
  521. }
  522. return new String(c);
  523. }
  524. /**/
  525. // /
  526. // / 转半角的函数(DBC case)
  527. // /
  528. // /任意字符串
  529. // /半角字符串
  530. // /
  531. // /全角空格为12288,半角空格为32
  532. // /其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
  533. // /
  534. public static String ToDBC(String input)
  535. {
  536. char[] c = input.ToCharArray();
  537. for (int i = 0; i < c.Length; i++)
  538. {
  539. if (c[i] == 12288)
  540. {
  541. c[i] = (char)32;
  542. continue;
  543. }
  544. if (c[i] > 65280 && c[i] < 65375)
  545. c[i] = (char)(c[i] - 65248);
  546. }
  547. return new String(c);
  548. }
  549. /// <summary>
  550. /// 去掉所有的非数字
  551. /// </summary>
  552. /// <param name="key"></param>
  553. /// <returns></returns>
  554. public static string RemoveNotNumber(string key)
  555. {
  556. return Regex.Replace(key, @"[^\d]*", "");
  557. }
  558. /// <summary>
  559. /// 去掉所有的数字
  560. /// </summary>
  561. /// <param name="key"></param>
  562. /// <returns></returns>
  563. public static string RemoveNumber(string key)
  564. {
  565. return Regex.Replace(key, @"\d", "");
  566. }
  567. }
  568. }