using System; using System.Data; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Web; using System.Web.Script.Serialization; using NJL = Newtonsoft.Json.Linq; using NJ = Newtonsoft.Json; using HZQR.Common; namespace SuperMap.RealEstate.Contract.Common { public class Common { public const string charSet = "1,2,3,4,5,6,7,8,9"; #region 方法 -> 获取get,post传参的值 public static string Request(string key) { var v = HttpContext.Current.Request.Form[key]; if (v == null) { v = HttpContext.Current.Request.QueryString[key]; } return v ?? string.Empty; } #endregion #region 方法 -> 发票查验接口 public static bool GetBillState(string fpdm, string fphm, string kprq, string je, string jym, string BillAppKey, string ServiceUrl) { bool Flag = false; try { //fpdm:发票代码,fphm:发票号码,kprq:开票日期,je:金额(非专票随便填个值),jym:校验码后六位(专票随便填个值) string[] arg = { fpdm, fphm, kprq, je, jym, BillAppKey, null }; string reString = WSHelper.InvokeWebService(ServiceUrl, "BillInfoQuery", arg).ToString(); NJL.JObject _JObject = (NJL.JObject)NJ.JsonConvert.DeserializeObject(reString); if (_JObject["BillInfo"].ToString() != "[]") { Flag = true; } } catch (Exception ex) { Flag = false; } return Flag; } #endregion #region 方法 -> 生成验证码 /// /// 生成验证码 /// 位数 /// 验证码字符串 private string CreateRandomCode(int n) { string[] CharArray = charSet.Split(','); string randomCode = ""; int temp = -1; Random rand = new Random(); for (int i = 0; i < n; i++) { if (temp != -1) { rand = new Random(i * temp * ((int)DateTime.Now.Ticks)); } int t = rand.Next(CharArray.Length - 1); if (temp == t) { return CreateRandomCode(n); } temp = t; randomCode += CharArray[t]; } return randomCode; } #endregion #region 方法 -> 日期格式转换 /// /// 将DateTime类型转换为long类型 /// /// 时间 /// public static long ConvertDataTimeLong(DateTime dt) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); TimeSpan toNow = dt.Subtract(dtStart); long timeStamp = toNow.Ticks; timeStamp = long.Parse(timeStamp.ToString().Substring(0, timeStamp.ToString().Length - 7)); return timeStamp; } /// /// 将Long类型转换为DateTime类型 /// /// long /// s public static DateTime ConvertLongDateTime(long d) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(d + "0000000"); TimeSpan toNow = new TimeSpan(lTime); DateTime dtResult = dtStart.Add(toNow); return dtResult; } #endregion #region 创建md5 16位大写加密 public static string CreateMD5(string text) { var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); //换成utf8后对于中文加密也适用 byte[] output = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text)); string pass2md5 = BitConverter.ToString(output, 4, 8).Replace("-", ""); //pass2md5 = pass2md5.ToUpper(); return pass2md5; } #endregion #region 方法 -> Json 字符串 转换为 DataTable数据集合 /// /// Json 字符串 转换为 DataTable数据集合 /// /// /// public static DataTable ToDataTable(string json) { DataTable dataTable = new DataTable(); //实例化 DataTable result; try { JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值 ArrayList arrayList = javaScriptSerializer.Deserialize(json); if (arrayList.Count > 0) { foreach (Dictionary dictionary in arrayList) { if (dictionary.Keys.Count == 0) { result = dataTable; return result; } //Columns if (dataTable.Columns.Count == 0) { foreach (string current in dictionary.Keys) { dataTable.Columns.Add(current, dictionary[current].GetType()); } } //Rows DataRow dataRow = dataTable.NewRow(); foreach (string current in dictionary.Keys) { dataRow[current] = dictionary[current]; } dataTable.Rows.Add(dataRow); //循环添加行到DataTable中 } } } catch { } result = dataTable; return result; } #endregion #region 方法 -> HTTP报文请求 /// /// HTTP报文请求 /// /// 请求参数 /// 请求url /// 资源的媒体类型,默认application/x-www-form-urlencoded /// 超时时间(TCP连接建立的时间和整个请求完成的时间超出了设置的时间,就抛出异常,程序中断) /// 服务器通信的默认安全协议(众马对账通信需使用Tls12,WCF默认通道即可) /// public static string HttpUrlPost(string postDataStr, string RequestUrl, string ContentType = "application/x-www-form-urlencoded", int timeout = 0) { try { CookieContainer cookieContainer = new CookieContainer(); byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postDataStr); // 设置提交的相关参数 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); HttpWebRequest request = WebRequest.Create(RequestUrl) as HttpWebRequest; if (timeout > 0) { request.Timeout = timeout * 1000; } request.Method = "POST"; request.KeepAlive = false; request.ContentType = ContentType; request.CookieContainer = cookieContainer; request.ContentLength = postBytes.Length; using (System.IO.Stream reqStream = request.GetRequestStream()) { reqStream.Write(postBytes, 0, postBytes.Length); } using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { //在这里对接收到的页面内容进行处理 //直到request.GetResponse()程序才开始向目标网页发送post请求 System.IO.Stream responseStream = response.GetResponseStream(); System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, System.Text.Encoding.GetEncoding("utf-8")); string val = reader.ReadToEnd(); return val; } } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "Post请求", "Post请求:" + postDataStr + "," + RequestUrl); return ex.ToString(); } } public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; } #endregion } }