| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657 |
- using RMYY_CallCenter_Api.Utility.Helper;
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Web;
- namespace RMYY_CallCenter_Api.Utility
- {
- /// <summary>
- /// 页面获取数据类
- /// </summary>
- public class RequestString
- {
- /// <summary>
- /// 判断当前页面是否接收到了Post请求
- /// </summary>
- /// <returns>是否接收到了Post请求</returns>
- public static bool IsPost()
- {
- return HttpContext.Current.Request.HttpMethod.Equals("POST");
- }
- /// <summary>
- /// 判断当前页面是否接收到了Get请求
- /// </summary>
- /// <returns>是否接收到了Get请求</returns>
- public static bool IsGet()
- {
- return HttpContext.Current.Request.HttpMethod.Equals("GET");
- }
- /// <summary>
- /// 返回URL中结尾的文件名
- /// </summary>
- public static string GetFilename(string url)
- {
- if (url == null)
- {
- return "";
- }
- string[] strs1 = url.Split(new[] { '/' });
- return strs1[strs1.Length - 1].Split(new[] { '?' })[0];
- }
- /// <summary>
- /// 返回指定的服务器变量信息
- /// </summary>
- /// <param name="strName">服务器变量名</param>
- /// <returns>服务器变量信息</returns>
- public static string GetServerString(string strName)
- {
- if (HttpContext.Current.Request.ServerVariables[strName] == null)
- return "";
- return HttpContext.Current.Request.ServerVariables[strName];
- }
- /// <summary>
- /// 返回上一个页面的地址
- /// </summary>
- /// <returns>上一个页面的地址</returns>
- public static string GetUrlReferrer()
- {
- string retVal = null;
- try
- {
- if (HttpContext.Current.Request.UrlReferrer != null)
- retVal = HttpContext.Current.Request.UrlReferrer.ToString();
- }
- catch (Exception)
- { }
- if (retVal == null)
- return "";
- return retVal;
- }
- /// <summary>
- /// 得到当前完整主机头
- /// </summary>
- /// <returns></returns>
- public static string GetCurrentFullHost()
- {
- HttpRequest request = HttpContext.Current.Request;
- if (!request.Url.IsDefaultPort)
- return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString(CultureInfo.InvariantCulture));
- return request.Url.Host;
- }
- /// <summary>
- /// 得到主机头
- /// </summary>
- /// <returns></returns>
- public static string GetHost()
- {
- return HttpContext.Current.Request.Url.Host;
- }
- /// <summary>
- /// 得到主机名
- /// </summary>
- public static string GetDnsSafeHost()
- {
- return HttpContext.Current.Request.Url.DnsSafeHost;
- }
- /// <summary>
- /// 获取当前请求的原始 URL(URL 中域信息之后的部分,包括查询字符串(如果存在))
- /// </summary>
- /// <returns>原始 URL</returns>
- public static string GetRawUrl()
- {
- return HttpContext.Current.Request.RawUrl;
- }
- /// <summary>
- /// 判断当前访问是否来自浏览器软件
- /// </summary>
- /// <returns>当前访问是否来自浏览器软件</returns>
- public static bool IsBrowserGet()
- {
- string[] BrowserName = { "ie", "opera", "netscape", "mozilla", "konqueror", "firefox" };
- string curBrowser = HttpContext.Current.Request.Browser.Type.ToLower();
- return BrowserName.Any(t => curBrowser.IndexOf(t, StringComparison.Ordinal) >= 0);
- }
- /// <summary>
- /// 判断是否来自搜索引擎链接
- /// </summary>
- /// <returns>是否来自搜索引擎链接</returns>
- public static bool IsSearchEnginesGet()
- {
- if (HttpContext.Current.Request.UrlReferrer == null)
- return false;
- string[] SearchEngine = { "google", "yahoo", "msn", "baidu", "sogou", "sohu", "sina", "163", "lycos", "tom", "yisou", "iask", "soso", "gougou", "zhongsou" };
- string tmpReferrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLower();
- return SearchEngine.Any(t => tmpReferrer.IndexOf(t, StringComparison.Ordinal) >= 0);
- }
- /// <summary>
- /// 获得当前完整Url地址
- /// </summary>
- /// <returns>当前完整Url地址</returns>
- public static string GetUrl()
- {
- return HttpContext.Current.Request.Url.ToString();
- }
- /// <summary>
- /// 获取文件
- /// </summary>
- /// <param name="strName"></param>
- /// <returns></returns>
- public static HttpPostedFile GetFile(string strName)
- {
- return HttpContext.Current.Request.Files[strName];
- }
- /// <summary>
- /// 获取文件
- /// </summary>
- /// <returns></returns>
- public static HttpFileCollection GetFiles()
- {
- return HttpContext.Current.Request.Files;
- }
- /// <summary>
- /// 获取stream
- /// </summary>
- /// <returns></returns>
- public static Stream GetInputStream()
- {
- return HttpContext.Current.Request.InputStream;
- }
- /// <summary>
- /// 获得指定Url参数的值
- /// </summary>
- /// <param name="strName">Url参数</param>
- /// <returns>Url参数的值</returns>
- public static string GetQueryString(string strName)
- {
- return GetQueryString(strName, false);
- }
- /// <summary>
- /// 获得指定Url参数的值
- /// </summary>
- /// <param name="strName">Url参数</param>
- /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
- /// <returns>Url参数的值</returns>
- public static string GetQueryString(string strName, bool sqlSafeCheck)
- {
- if (HttpContext.Current.Request.QueryString[strName] == null)
- return "";
- if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.QueryString[strName]))
- return "";
- return HttpContext.Current.Request.QueryString[strName];
- }
- /// <summary>
- /// 获得指定Url参数的值
- /// </summary>
- /// <param name="strName">Url参数</param>
- /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
- /// <param name="defValue">当SQL安全检查不通过或无值时的默认值</param>
- /// <returns>Url参数的值</returns>
- public static string GetQueryString(string strName, bool sqlSafeCheck, string defValue)
- {
- if (HttpContext.Current.Request.QueryString[strName] == null)
- return defValue;
- if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.QueryString[strName]))
- return defValue;
- return HttpContext.Current.Request.QueryString[strName];
- }
- /// <summary>
- /// SQL危险字符过滤
- /// </summary>
- /// <param name="source">要过滤的字符串</param>
- /// <param name="SafeLevel">安全级别{1最高}</param>
- /// <returns></returns>
- public static string FilterSql(string source, int SafeLevel)
- {
- //单引号替换成两个单引号
- source = source.Replace("'", "''");
- source = source.Replace("--", "--");
- if (SafeLevel == 1)
- {
- //单引号替换成两个单引号
- source = source.Replace("\"", "“");
- source = source.Replace("|", "|");
- //半角封号替换为全角封号,防止多语句执行
- source = source.Replace(";", ";");
- source = source.Replace("=", "=");
- //半角括号替换为全角括号
- source = source.Replace("(", "(");
- source = source.Replace(")", ")");
- }
- return source;
- }
- /// <summary>
- /// 检测是否有Sql危险字符
- /// </summary>
- /// <param name="str">要判断字符串</param>
- /// <returns>判断结果</returns>
- public static bool IsSafeSqlString(string str)
- {
- return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");
- }
- /// <summary>
- /// 检测是否有危险的可能用于链接的字符串
- /// </summary>
- /// <param name="str">要判断字符串</param>
- /// <returns>判断结果</returns>
- public static bool IsSafeUserInfoString(string str)
- {
- return !Regex.IsMatch(str, @"^\s*$|^c:\\con\\con$|[%,\*" + "\"" + @"\s\t\<\>\&]|游客|^Guest");
- }
- /// <summary>
- /// 获得当前页面的名称
- /// </summary>
- /// <returns>当前页面的名称</returns>
- public static string GetPageName()
- {
- string[] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
- return urlArr[urlArr.Length - 1].ToLower();
- }
- /// <summary>
- /// 返回表单或Url参数的总个数
- /// </summary>
- /// <returns></returns>
- public static int GetParamCount()
- {
- return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;
- }
- /// <summary>
- /// 获得指定表单参数的值
- /// </summary>
- /// <param name="strName">表单参数</param>
- /// <returns>表单参数的值</returns>
- public static string GetFormString(string strName)
- {
- return GetFormString(strName, false);
- }
- /// <summary>
- /// 获得指定表单参数的值
- /// </summary>
- /// <param name="strName">表单参数</param>
- /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
- /// <returns>表单参数的值</returns>
- public static string GetFormString(string strName, bool sqlSafeCheck)
- {
- if (HttpContext.Current.Request.Form[strName] == null)
- return "";
- if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.Form[strName]))
- return "";
- return HttpContext.Current.Request.Form[strName];
- }
- /// <summary>
- /// 获得指定表单参数的值
- /// </summary>
- /// <param name="strName">表单参数</param>
- /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
- /// <param name="defValue">当SQL安全检查不通过或无值时的默认值</param>
- /// <returns>表单参数的值</returns>
- public static string GetFormString(string strName, bool sqlSafeCheck, string defValue)
- {
- if (HttpContext.Current.Request.Form[strName] == null)
- return defValue;
- if (sqlSafeCheck && !IsSafeSqlString(HttpContext.Current.Request.Form[strName]))
- return defValue;
- return HttpContext.Current.Request.Form[strName];
- }
- /// <summary>
- /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
- /// </summary>
- /// <param name="strName">参数</param>
- /// <returns>Url或表单参数的值</returns>
- public static string GetString(string strName)
- {
- return GetString(strName, false);
- }
- /// <summary>
- /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
- /// </summary>
- /// <param name="strName">参数</param>
- /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
- /// <returns>Url或表单参数的值</returns>
- public static string GetString(string strName, bool sqlSafeCheck)
- {
- if ("".Equals(GetQueryString(strName)))
- return GetFormString(strName, sqlSafeCheck);
- return GetQueryString(strName, sqlSafeCheck);
- }
- /// <summary>
- /// 获得Url或表单参数的值, 先判断Url参数是否为空字符串, 如为True则返回表单参数的值
- /// </summary>
- /// <param name="strName">参数</param>
- /// <param name="sqlSafeCheck">是否进行SQL安全检查</param>
- /// <param name="defValue">当SQL安全检查不通过或无值时的默认值</param>
- /// <returns>Url或表单参数的值</returns>
- public static string GetString(string strName, bool sqlSafeCheck, string defValue)
- {
- if ("".Equals(GetQueryString(strName)))
- return GetFormString(strName, sqlSafeCheck, defValue);
- return GetQueryString(strName, sqlSafeCheck, defValue);
- }
- /// <summary>
- /// 获得指定Url参数的int类型值
- /// </summary>
- /// <param name="strName">Url参数</param>
- /// <returns>Url参数的int类型值</returns>
- public static int GetQueryInt(string strName)
- {
- return TypeConverter.StrToInt(HttpContext.Current.Request.QueryString[strName], 0);
- }
- /// <summary>
- /// 获得指定Url参数的int类型值
- /// </summary>
- /// <param name="strName">Url参数</param>
- /// <param name="defValue">缺省值</param>
- /// <returns>Url参数的int类型值</returns>
- public static int GetQueryInt(string strName, int defValue)
- {
- return TypeConverter.StrToInt(HttpContext.Current.Request.QueryString[strName], defValue);
- }
- /// <summary>
- /// 获得指定表单参数的int类型值
- /// </summary>
- /// <param name="strName">表单参数</param>
- /// <param name="defValue">缺省值</param>
- /// <returns>表单参数的int类型值</returns>
- public static int GetFormInt(string strName, int defValue)
- {
- return TypeConverter.StrToInt(HttpContext.Current.Request.Form[strName], defValue);
- }
- /// <summary>
- /// 获得指定Url或表单参数的int类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
- /// </summary>
- /// <param name="strName">Url或表单参数</param>
- /// <param name="defValue">缺省值</param>
- /// <returns>Url或表单参数的int类型值</returns>
- public static int GetInt(string strName, int defValue)
- {
- if (GetQueryInt(strName, defValue) == defValue)
- return GetFormInt(strName, defValue);
- return GetQueryInt(strName, defValue);
- }
- /// <summary>
- /// 获得指定Url参数的float类型值
- /// </summary>
- /// <param name="strName">Url参数</param>
- /// <param name="defValue">缺省值</param>
- /// <returns>Url参数的int类型值</returns>
- public static float GetQueryFloat(string strName, float defValue)
- {
- return TypeConverter.StrToFloat(HttpContext.Current.Request.QueryString[strName], defValue);
- }
- /// <summary>
- /// 获得指定表单参数的float类型值
- /// </summary>
- /// <param name="strName">表单参数</param>
- /// <param name="defValue">缺省值</param>
- /// <returns>表单参数的float类型值</returns>
- public static float GetFormFloat(string strName, float defValue)
- {
- return TypeConverter.StrToFloat(HttpContext.Current.Request.Form[strName], defValue);
- }
- /// <summary>
- /// 获得指定Url或表单参数的float类型值, 先判断Url参数是否为缺省值, 如为True则返回表单参数的值
- /// </summary>
- /// <param name="strName">Url或表单参数</param>
- /// <param name="defValue">缺省值</param>
- /// <returns>Url或表单参数的int类型值</returns>
- public static float GetFloat(string strName, float defValue)
- {
- if (GetQueryFloat(strName, defValue) == defValue)
- return GetFormFloat(strName, defValue);
- return GetQueryFloat(strName, defValue);
- }
- /// <summary>
- /// 获得当前页面客户端的IP
- /// </summary>
- /// <returns>当前页面客户端的IP</returns>
- public static string GetIP()
- {
- try
- {
- string result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
- if (string.IsNullOrEmpty(result))
- result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
- if (string.IsNullOrEmpty(result))
- result = HttpContext.Current.Request.UserHostAddress;
- if (string.IsNullOrEmpty(result) || !ValidateString.IsIP(result))
- return "127.0.0.1";
- return result;
- }
- catch
- {
- return "127.0.0.1";
- }
- }
- /// <summary>
- /// 获取URL地址的网页内容
- /// </summary>
- public class GetUrlText
- {
- /// <summary>
- /// Gets the text.
- /// </summary>
- /// <param name="url">地址 The URL.</param>
- /// <param name="Encoding">编码 The encoding.</param>
- /// <returns></returns>
- public static string GetText(string url, string Encoding)
- {
- WebResponse wr_result = null;
- var txthtml = new StringBuilder();
- try
- {
- WebRequest wr_req = WebRequest.Create(url);
- wr_result = wr_req.GetResponse();
- Stream ReceiveStream = wr_result.GetResponseStream();
- Encoding encode = System.Text.Encoding.GetEncoding(Encoding);
- var sr = new StreamReader(ReceiveStream, encode);
- if (true)
- {
- var read = new Char[256];
- int count = sr.Read(read, 0, 256);
- while (count > 0)
- {
- var str = new String(read, 0, count);
- txthtml.Append(str);
- count = sr.Read(read, 0, 256);
- }
- }
- }
- catch (Exception)
- {
- txthtml.Append("err");
- }
- finally
- {
- if (wr_result != null)
- {
- wr_result.Close();
- }
- }
- return txthtml.ToString();
- }
- public static string GetText(string HttpUrl)
- {
- try
- {
- HttpHelperay http = new HttpHelperay();
- HttpItem item = new HttpItem()
- {
- URL = HttpUrl,//URL 必需项
- Method = "get",//URL 可选项 默认为Get
- IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
- Cookie = "",//字符串Cookie 可选项
- Referer = "",//来源URL 可选项
- Postdata = "",//Post数据 可选项GET时不需要写
- Timeout = 100000,//连接超时时间 可选项默认为100000
- ReadWriteTimeout = 30000,//写入Post数据超时时间 可选项默认为30000
- ContentType = "text/html",//返回类型 可选项有默认值
- Allowautoredirect = false,//是否根据301跳转 可选项
- //CerPath = "d:\123.cer",//证书绝对路径 可选项不需要证书时可以不写这个参数
- //Connectionlimit = 1024,//最大连接数 可选项 默认为1024
- ProxyIp = "",//代理服务器ID 可选项 不需要代理 时可以不设置这三个参数
- //ProxyPwd = "123456",//代理服务器密码 可选项
- //ProxyUserName = "administrator",//代理服务器账户名 可选项
- };
- var result = http.GetHtml(item);
- string html = result.Html;
- return html;
- //var request = (HttpWebRequest)HttpWebRequest.Create(HttpUrl);
- //var response = (HttpWebResponse)request.GetResponse();
- //var strConfig = String.Empty;
- //using (var reader = new StreamReader(response.GetResponseStream()))
- //{
- // strConfig = reader.ReadToEnd();
- //}
- //return strConfig;
- }
- catch (Exception)
- {
- return "";
- }
- }
- }
- /// 转全角的函数(SBC case)
- ///
- ///任意字符串
- ///全角字符串
- ///
- ///全角空格为12288,半角空格为32
- ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
- ///
- public static String ToSBC(String input)
- {
- // 半角转全角:
- char[] c = input.ToCharArray();
- for (int i = 0; i < c.Length; i++)
- {
- if (c[i] == 32)
- {
- c[i] = (char)12288;
- continue;
- }
- if (c[i] < 127)
- c[i] = (char)(c[i] + 65248);
- }
- return new String(c);
- }
- /**/
- // /
- // / 转半角的函数(DBC case)
- // /
- // /任意字符串
- // /半角字符串
- // /
- // /全角空格为12288,半角空格为32
- // /其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
- // /
- public static String ToDBC(String input)
- {
- char[] c = input.ToCharArray();
- for (int i = 0; i < c.Length; i++)
- {
- if (c[i] == 12288)
- {
- c[i] = (char)32;
- continue;
- }
- if (c[i] > 65280 && c[i] < 65375)
- c[i] = (char)(c[i] - 65248);
- }
- return new String(c);
- }
- /// <summary>
- /// 去掉所有的非数字
- /// </summary>
- /// <param name="key"></param>
- /// <returns></returns>
- public static string RemoveNotNumber(string key)
- {
- return Regex.Replace(key, @"[^\d]*", "");
- }
- /// <summary>
- /// 去掉所有的数字
- /// </summary>
- /// <param name="key"></param>
- /// <returns></returns>
- public static string RemoveNumber(string key)
- {
- return Regex.Replace(key, @"\d", "");
- }
- }
- }
|