示例#1
0
        /// <summary>
        /// 表数据保存到数据库(事务中)
        /// </summary>
        /// <param name="drsr"></param>
        /// <returns></returns>
        private void SaveDataRows(DataRowSaveResult drsr)
        {
            drsr.DataRow = null;
            Action <object, DataRowsSaveEventArgs> dataRowsSaveHandler = new Action <object, DataRowsSaveEventArgs>(SavingDataRows);
            Action <object, DataRowSaveEventArgs>  dataRowSaveHandler  = new Action <object, DataRowSaveEventArgs>(SavingDataRow);
            DataRowsSaveResult drssr = this.BDOS.MasterBDO.SaveToDB(dataRowsSaveHandler, dataRowSaveHandler);

            if (drssr.Success)
            {
                return;
            }
            drsr.DataRow   = drssr.DataRow;
            drsr.ErrorText = drssr.ErrorText;
            drsr.Fields    = drssr.Fields;
        }
示例#2
0
        // 记录接口日志

        public static IRestResponse <T> PostExcute <T>(DataRow InterfaceURL, DataRow InterfaceQueue, object PostObj) where T : class, new()
        {
            if (string.IsNullOrEmpty(InterfaceURL["Url"].ToString()))
            {
                throw new ApplicationException("接口地址未配置!");
            }
            var client  = new RestClient(InterfaceURL["Url"].ToString());
            var request = new RestRequest(Method.POST)
            {
                RequestFormat = DataFormat.Json
            };

            request.AddJsonBody(PostObj);
            request.AddHeader("Content-Type", "application/json; charset=utf-8");

            var content = client.Execute <T>(request);

            var interfaceCode = string.Empty;

            if (InterfaceURL["Url"].ToString().Contains("="))
            {
                interfaceCode = InterfaceURL["Url"].ToString().Split('=')[1];
            }

            string requestBody  = content.Request.JsonSerializer.Serialize(PostObj);
            string responseBody = content.Content;


            if (content.StatusCode != System.Net.HttpStatusCode.OK)
            {
                BDO     bd    = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                DataRow drBat = bd.NewRow();
                drBat["IsIn"]            = 0;
                drBat["LogTime"]         = DateTime.Now;
                drBat["SerialNo"]        = InterfaceQueue["SerialNo"];
                drBat["FunctionName"]    = InterfaceQueue["FunctionName"];
                drBat["InterfaceName"]   = InterfaceQueue["InterfaceName"];
                drBat["interfaceCode"]   = interfaceCode;
                drBat["RequestBody"]     = requestBody;
                drBat["ResponseBody"]    = responseBody;
                drBat["ResponseCode"]    = "E";
                drBat["ResponseMessage"] = content.Content;
                bd.Rows.Add(drBat);
                DataRowsSaveResult drsr = bd.SaveToDB(null, null);
            }
            else
            {
                var ResponseCode    = string.Empty;
                var ResponseMessage = string.Empty;
                var ZGUID           = string.Empty;
                var isSendMialToSAP = false;//是否发送邮件 added by haijun 2018-4-18
                try
                {
                    BaseReturnModel model = Newtonsoft.Json.JsonConvert.DeserializeObject <BaseReturnModel>(responseBody);
                    if (model == null)
                    {
                        throw new ApplicationException("返回信息解析失败:" + InterfaceURL["Url"].ToString() + "->" + responseBody);
                    }
                    if (content.Data == null)
                    {
                        content.Data = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(responseBody);
                    }

                    //added by haijun
                    if (model.HEAD != null)
                    {
                        if (!String.IsNullOrEmpty(model.HEAD.ZTYPE))
                        {
                            if (model.HEAD.ZTYPE == "E")
                            {
                                isSendMialToSAP = true;
                            }
                        }
                    }
                    if (model.ITEM != null && model.ITEM.Count > 0 && !isSendMialToSAP)
                    {
                        var items = model.ITEM.Where(i => i.ZTYPE == "E");
                        if (items.Any())
                        {
                            isSendMialToSAP = true;
                        }
                    }

                    if (model.HEAD != null && !string.IsNullOrEmpty(model.HEAD.ZTYPE))
                    {
                        ResponseCode    = model.HEAD.ZTYPE;
                        ResponseMessage = model.HEAD.ZMESSAGE;
                        ZGUID           = model.HEAD.ZGUID;
                    }
                    else if (model.ITEM != null && model.ITEM.Count > 0)
                    {
                        var items = model.ITEM.Where(i => i.ZTYPE == "E");
                        ResponseCode = items.Any() ? "E" : "S";
                        if (items.Any())
                        {
                            ResponseMessage = string.Join(";", items.Select(s => s.ZMESSAGE).ToList());
                        }
                        else
                        {
                            ResponseMessage = model.ITEM.First().ZMESSAGE;
                        }

                        ZGUID = model.ITEM.First().ZGUID;
                    }
                }
                catch (Exception ex)
                {
                    ResponseCode    = "N/A";
                    ResponseMessage = string.IsNullOrEmpty(responseBody) ? ex.Message : responseBody;
                }


                BDO     bd    = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                DataRow drBat = bd.NewRow();
                drBat["IsIn"]            = 0;
                drBat["LogTime"]         = DateTime.Now;
                drBat["SerialNo"]        = InterfaceQueue["SerialNo"];
                drBat["FunctionName"]    = InterfaceQueue["FunctionName"];
                drBat["InterfaceName"]   = InterfaceQueue["InterfaceName"];
                drBat["interfaceCode"]   = interfaceCode;
                drBat["RequestBody"]     = requestBody;
                drBat["ResponseBody"]    = responseBody;
                drBat["ResponseCode"]    = ResponseCode;
                drBat["ResponseMessage"] = string.IsNullOrEmpty(ResponseMessage) ? "" : ResponseMessage;
                bd.Rows.Add(drBat);
                DataRowsSaveResult drsr = bd.SaveToDB(null, null);
            }

            return(content);
        }
示例#3
0
        /// <summary>
        /// 实时接口
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="interfaceCode"></param>
        /// <param name="interfaceName"></param>
        /// <param name="PostObj"></param>
        /// <returns></returns>
        public static IRestResponse <T> PostExcute <T>(DataRow InterfaceURLRow, string interfaceName, object PostObj) where T : class, new()
        {
            //BDOs tmpInterFaceConfig = new BDOs("SYS_InterfaceURL", "INTERFACECODE = '"+ interfaceCode+"'");
            if (InterfaceURLRow == null)
            {
                throw new ApplicationException("接口地址未配置!");
            }
            string InterfaceURL = InterfaceURLRow["URL"].ToString();

            if (string.IsNullOrEmpty(InterfaceURL))
            {
                throw new ApplicationException("接口地址未配置!");
            }


            string interfaceCode = InterfaceURLRow["INTERFACECODE"].ToString();
            var    client        = new RestClient(InterfaceURL);
            var    request       = new RestRequest(Method.POST)
            {
                RequestFormat = DataFormat.Json
            };

            request.AddJsonBody(PostObj);
            request.AddHeader("Content-Type", "application/json; charset=utf-8");

            var content = client.Execute <T>(request);


            string requestBody = content.Request.JsonSerializer.Serialize(PostObj);

            requestBody = requestBody.Replace("\\\\", "\\");
            string responseBody = content.Content;

            StackTrace trace  = new StackTrace();
            StackFrame frame  = trace.GetFrame(1);
            MethodBase method = frame.GetMethod();

            //String className = method.ReflectedType.Name;


            if (content.StatusCode != System.Net.HttpStatusCode.OK)
            {
                BDO     bd    = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                DataRow drBat = bd.NewRow();
                drBat["IsIn"]          = 1;
                drBat["LogTime"]       = DateTime.Now;
                drBat["SerialNo"]      = Guid.NewGuid();
                drBat["FunctionName"]  = method.Name;
                drBat["InterfaceName"] = interfaceName;
                drBat["interfaceCode"] = interfaceCode;
                drBat["RequestBody"]   = requestBody;
                drBat["ResponseBody"]  = responseBody;
                drBat["ResponseCode"]  = "E";

                if (string.IsNullOrEmpty(content.Content))
                {
                    content.Content = "接口未联通";
                }

                drBat["ResponseMessage"] = content.Content;
                bd.Rows.Add(drBat);
                DataRowsSaveResult drsr = bd.SaveToDB(null, null);
            }
            else
            {
                var ResponseCode    = string.Empty;
                var ResponseMessage = string.Empty;
                var ZGUID           = string.Empty;
                try
                {
                    responseBody = responseBody.Substring(6, responseBody.Length - 8);
                    responseBody = responseBody.Replace("\\", "");
                    responseBody = responseBody.Replace("/Date(", "");
                    responseBody = responseBody.Replace(")/", "");
                    responseBody = responseBody.Insert(1, "\"ZINT_ID\":\"" + interfaceCode + "\",");
                    BaseModel model = Newtonsoft.Json.JsonConvert.DeserializeObject <BaseModel>(responseBody);
                    if (model == null)
                    {
                        throw new ApplicationException("返回信息解析失败:" + InterfaceURL + "->" + responseBody);
                    }
                    if (content.Data == null)
                    {
                        content.Data = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(responseBody);
                    }

                    //added by haijun

                    if (model != null && !string.IsNullOrEmpty(model.ZTYPE))
                    {
                        ResponseCode    = model.ZTYPE;
                        ResponseMessage = model.ZMESSAGE;
                        ZGUID           = model.ZGUID;
                    }
                    //else if (model != null && model.Count > 0)
                    //{
                    //    //var items = model.ITEM.Where(i => i.ZTYPE == "E");
                    //    //ResponseCode = items.Any() ? "E" : "S";
                    //    //if (items.Any())
                    //    //{
                    //    //    ResponseMessage = string.Join(";", items.Select(s => s.ZMESSAGE).ToList());
                    //    //}
                    //    //else
                    //    //{
                    //        ResponseMessage = model.ITEM.First().ZMESSAGE;
                    //    //}

                    //    ZGUID = model.ITEM.First().ZGUID;
                    //}
                }
                catch (Exception ex)
                {
                    ResponseCode    = "N/A";
                    ResponseMessage = string.IsNullOrEmpty(responseBody) ? ex.Message : responseBody;
                }


                BDO     bd    = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                DataRow drBat = bd.NewRow();
                drBat["IsIn"]            = 1;
                drBat["SerialNo"]        = Guid.NewGuid();
                drBat["FunctionName"]    = method.Name;
                drBat["InterfaceName"]   = interfaceName;
                drBat["interfaceCode"]   = interfaceCode;
                drBat["RequestBody"]     = requestBody;
                drBat["ResponseBody"]    = responseBody;
                drBat["ResponseCode"]    = ResponseCode;
                drBat["ResponseMessage"] = string.IsNullOrEmpty(ResponseMessage) ? "" : ResponseMessage;
                bd.Rows.Add(drBat);
                DataRowsSaveResult drsr = bd.SaveToDB(null, null);
            }

            return(content);
        }
示例#4
0
        // 记录接口日志

        public static IRestResponse <T> PostExcute <T>(DataRow InterfaceURL, DataRow InterfaceQueue, object PostObj) where T : class, new()
        {
            if (string.IsNullOrEmpty(InterfaceURL["Url"].ToString()))
            {
                throw new ApplicationException("接口地址未配置!");
            }
            var client  = new RestClient(InterfaceURL["Url"].ToString());
            var request = new RestRequest(Method.POST)
            {
                RequestFormat = DataFormat.Json
            };

            request.AddJsonBody(PostObj);
            request.AddHeader("Content-Type", "application/json; charset=utf-8");

            var content = client.Execute <T>(request);

            var interfaceCode = string.Empty;

            if (InterfaceURL["Url"].ToString().Contains("="))
            {
                interfaceCode = InterfaceURL["Url"].ToString().Split('=')[1];
            }

            string requestBody  = JsonConvert.SerializeObject(PostObj);
            string responseBody = content.Content;


            if (content.StatusCode != System.Net.HttpStatusCode.OK)
            {
                BDO     bd    = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                DataRow drBat = bd.NewRow();
                drBat["IsIn"]            = 0;
                drBat["LogTime"]         = DateTime.Now;
                drBat["SerialNo"]        = InterfaceQueue["SerialNo"];
                drBat["FunctionName"]    = InterfaceQueue["FunctionName"];
                drBat["InterfaceName"]   = InterfaceQueue["InterfaceName"];
                drBat["interfaceCode"]   = interfaceCode;
                drBat["RequestBody"]     = requestBody;
                drBat["ResponseBody"]    = responseBody;
                drBat["ResponseCode"]    = "E";
                drBat["ResponseMessage"] = content.Content;
                bd.Rows.Add(drBat);
                DataRowsSaveResult drsr = bd.SaveToDB(null, null);
            }
            else
            {
                var ResponseCode    = string.Empty;
                var ResponseMessage = string.Empty;
                var ZGUID           = string.Empty;
                var isSendMialToSAP = false;//是否发送邮件 added by haijun 2018-4-18
                try
                {
                    MES2ERPResult model = Newtonsoft.Json.JsonConvert.DeserializeObject <MES2ERPResult>(responseBody);
                    if (model == null)
                    {
                        throw new ApplicationException("返回信息解析失败:" + InterfaceURL["Url"].ToString() + "->" + responseBody);
                    }
                    if (content.Data == null)
                    {
                        content.Data = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(responseBody);
                    }
                }
                catch (Exception ex)
                {
                    ResponseCode    = "N/A";
                    ResponseMessage = string.IsNullOrEmpty(responseBody) ? ex.Message : responseBody;
                }


                BDO     bd    = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                DataRow drBat = bd.NewRow();
                drBat["IsIn"]            = 0;
                drBat["LogTime"]         = DateTime.Now;
                drBat["SerialNo"]        = InterfaceQueue["SerialNo"];
                drBat["FunctionName"]    = InterfaceQueue["FunctionName"];
                drBat["InterfaceName"]   = InterfaceQueue["InterfaceName"];
                drBat["interfaceCode"]   = interfaceCode;
                drBat["RequestBody"]     = requestBody;
                drBat["ResponseBody"]    = responseBody;
                drBat["ResponseCode"]    = ResponseCode;
                drBat["ResponseMessage"] = string.IsNullOrEmpty(ResponseMessage) ? "" : ResponseMessage;
                bd.Rows.Add(drBat);
                DataRowsSaveResult drsr = bd.SaveToDB(null, null);
            }

            return(content);
        }
示例#5
0
        /// <summary>
        /// 实时接口
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="interfaceCode"></param>
        /// <param name="interfaceName"></param>
        /// <param name="PostObj"></param>
        /// <returns></returns>
        public static IRestResponse <T> PostExcute <T>(DataRow InterfaceURLRow, string interfaceName, object PostObj) where T : class, new()
        {
            //BDOs tmpInterFaceConfig = new BDOs("SYS_InterfaceURL", "INTERFACECODE = '"+ interfaceCode+"'");
            if (InterfaceURLRow == null)
            {
                throw new ApplicationException("接口地址未配置!");
            }
            string InterfaceURL = InterfaceURLRow["URL"].ToString();

            if (string.IsNullOrEmpty(InterfaceURL))
            {
                throw new ApplicationException("接口地址未配置!");
            }


            string interfaceCode = InterfaceURLRow["INTERFACECODE"].ToString();

            /////////////////////////////////
            //using (var tmpClient = new HttpClient())
            //{
            //    try
            //    {
            //        var str = JsonConvert.SerializeObject(PostObj);
            //        str = str.Replace("STD_IN_Origin", "STD_IN Origin").Replace("Service_Name", "Service Name");
            //        HttpContent tmpContent = new StringContent(str);
            //        tmpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
            //        HttpResponseMessage response = tmpClient.PostAsync(InterfaceURL, tmpContent).Result;//改成自己的
            //        response.EnsureSuccessStatusCode();//用来抛异常的
            //        string  tmpResponseBody= response.Content.ReadAsStringAsync().Result;

            //    }
            //    catch (Exception e)
            //    {
            //        string msg = e.Message;
            //    }
            //}
            ///////////////////////////////////

            var str = JsonConvert.SerializeObject(PostObj);

            str = str.Replace("STD_IN_Origin", "STD_IN Origin").Replace("Service_Name", "Service Name");

            var client  = new RestClient(InterfaceURL);
            var request = new RestRequest();

            request.Method = Method.POST;
            request.AddHeader("Accept", "application/json");
            request.Parameters.Clear();
            request.AddParameter("application/json", str, ParameterType.RequestBody);

            //var content = response.Content; // 返回的网页内容

            //var client = new RestClient(InterfaceURL);
            //var request = new RestRequest(Method.POST) { RequestFormat = DataFormat.Json };
            //request.AddJsonBody(PostObj);
            //request.AddHeader("Content-Type", "application/json; charset=utf-8");

            var content = client.Execute <T>(request);


            //string requestBody = JsonConvert.SerializeObject(PostObj);
            string requestBody = str;

            requestBody = requestBody.Replace("\\\\", "\\");
            string responseBody = content.Content;

            StackTrace trace     = new StackTrace();
            StackFrame frame     = trace.GetFrame(1);
            MethodBase method    = frame.GetMethod();
            String     className = method.ReflectedType.Name;


            if (content.StatusCode != System.Net.HttpStatusCode.OK)
            {
                var  hi    = AppCache.GetCache <RequestHeaderInfo>(Thread.CurrentThread.ManagedThreadId);
                Task task1 = new Task(() =>
                {
                    var ai = new RequestHeaderInfo(hi.LangNo, hi.DBNo, hi.MenuNo, hi.UserNo, hi.UserName, "");
                    AppCache.Add(Thread.CurrentThread.ManagedThreadId, ai);

                    BDO bd1                   = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                    DataRow drBat1            = bd1.NewRow();
                    drBat1["IsIn"]            = 1;
                    drBat1["SerialNo"]        = Guid.NewGuid();
                    drBat1["FunctionName"]    = method.Name;
                    drBat1["InterfaceName"]   = interfaceName;
                    drBat1["interfaceCode"]   = interfaceCode;
                    drBat1["RequestBody"]     = requestBody;
                    drBat1["ResponseBody"]    = responseBody;
                    drBat1["ResponseCode"]    = "E";
                    drBat1["ResponseMessage"] = content.Content;
                    drBat1["CREATETIME"]      = DateTime.Now;
                    bd1.Rows.Add(drBat1);
                    DataRowsSaveResult drsr1 = bd1.SaveToDB();
                    if (!drsr1.Success)
                    {
                        throw new Exception(drsr1.ErrorText);
                    }
                });
                task1.Start();
                task1.Wait();
            }
            else
            {
                var ResponseCode    = string.Empty;
                var ResponseMessage = string.Empty;
                var ZGUID           = string.Empty;
                try
                {
                    //responseBody=responseBody.Replace("单别-单号", "Message").Replace("错误原因", "Message").Replace("处理结果", "Message");

                    //MES2ERPResult model = Newtonsoft.Json.JsonConvert.DeserializeObject<MES2ERPResult>(responseBody);
                    //if (model == null)
                    //    throw new ApplicationException("返回信息解析失败:" + InterfaceURL + "->" + responseBody);
                    if (content.Data == null)
                    {
                        content.Data = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(responseBody);
                    }
                }
                catch (Exception ex)
                {
                    ResponseCode    = "N/A";
                    ResponseMessage = string.IsNullOrEmpty(responseBody) ? ex.Message : responseBody;
                }

                var  hi    = AppCache.GetCache <RequestHeaderInfo>(Thread.CurrentThread.ManagedThreadId);
                Task task1 = new Task(() =>
                {
                    var ai = new RequestHeaderInfo(hi.LangNo, hi.DBNo, hi.MenuNo, hi.UserNo, hi.UserName, "");
                    AppCache.Add(Thread.CurrentThread.ManagedThreadId, ai);

                    BDO bd1                   = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                    DataRow drBat1            = bd1.NewRow();
                    drBat1["IsIn"]            = 1;
                    drBat1["SerialNo"]        = Guid.NewGuid();
                    drBat1["FunctionName"]    = method.Name;
                    drBat1["InterfaceName"]   = interfaceName;
                    drBat1["interfaceCode"]   = interfaceCode;
                    drBat1["RequestBody"]     = requestBody;
                    drBat1["ResponseBody"]    = responseBody;
                    drBat1["ResponseCode"]    = ResponseCode;
                    drBat1["ResponseMessage"] = string.IsNullOrEmpty(ResponseMessage) ? "" : ResponseMessage;
                    drBat1["CREATETIME"]      = DateTime.Now;
                    bd1.Rows.Add(drBat1);
                    DataRowsSaveResult drsr1 = bd1.SaveToDB();
                    if (!drsr1.Success)
                    {
                        throw new Exception(drsr1.ErrorText);
                    }
                });
                task1.Start();
                task1.Wait();
            }

            return(content);
        }
示例#6
0
        /// <summary>
        /// 实时接口 PUT请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="InterfaceURLRow"></param>
        /// <param name="interfaceName"></param>
        /// <param name="PostObj"></param>
        /// <returns></returns>
        public static IRestResponse <T> PutExcute <T>(DataRow InterfaceURLRow, string interfaceName, object PostObj) where T : class, new()
        {
            //BDOs tmpInterFaceConfig = new BDOs("SYS_InterfaceURL", "INTERFACECODE = '"+ interfaceCode+"'");
            if (InterfaceURLRow == null)
            {
                throw new ApplicationException("接口地址未配置!");
            }
            string InterfaceURL = InterfaceURLRow["URL"].ToString();

            if (string.IsNullOrEmpty(InterfaceURL))
            {
                throw new ApplicationException("接口地址未配置!");
            }


            string interfaceCode = InterfaceURLRow["INTERFACECODE"].ToString();
            var    client        = new RestClient(InterfaceURL);
            var    request       = new RestRequest(Method.PUT)
            {
                RequestFormat = DataFormat.Json
            };

            request.AddJsonBody(PostObj);
            request.AddHeader("Content-Type", "application/json; charset=utf-8");

            var content = client.Execute <T>(request);

            string requestBody = JsonConvert.SerializeObject(PostObj);

            requestBody = requestBody.Replace("\\\\", "\\");
            string responseBody = content.Content;

            StackTrace trace  = new StackTrace();
            StackFrame frame  = trace.GetFrame(1);
            MethodBase method = frame.GetMethod();

            //String className = method.ReflectedType.Name;


            if (content.StatusCode != System.Net.HttpStatusCode.OK)
            {
                BDO     bd    = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                DataRow drBat = bd.NewRow();
                drBat["IsIn"]          = 1;
                drBat["LogTime"]       = DateTime.Now;
                drBat["SerialNo"]      = Guid.NewGuid();
                drBat["FunctionName"]  = method.Name;
                drBat["InterfaceName"] = interfaceName;
                drBat["interfaceCode"] = interfaceCode;
                drBat["RequestBody"]   = requestBody;
                drBat["ResponseBody"]  = responseBody;
                drBat["ResponseCode"]  = "E";

                if (string.IsNullOrEmpty(content.Content))
                {
                    content.Content = "接口未联通";
                }

                drBat["ResponseMessage"] = content.Content;
                bd.Rows.Add(drBat);
                DataRowsSaveResult drsr = bd.SaveToDB(null, null);
            }
            else
            {
                var ResponseCode    = string.Empty;
                var ResponseMessage = string.Empty;
                var ZGUID           = string.Empty;
                try
                {
                    MES2ERPResult model = Newtonsoft.Json.JsonConvert.DeserializeObject <MES2ERPResult>(responseBody);
                    if (model == null)
                    {
                        throw new ApplicationException("返回信息解析失败:" + InterfaceURL + "->" + responseBody);
                    }
                    if (content.Data == null)
                    {
                        content.Data = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(responseBody);
                    }
                }
                catch (Exception ex)
                {
                    ResponseCode    = "N/A";
                    ResponseMessage = string.IsNullOrEmpty(responseBody) ? ex.Message : responseBody;
                }


                BDO     bd    = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                DataRow drBat = bd.NewRow();
                drBat["IsIn"]            = 1;
                drBat["SerialNo"]        = Guid.NewGuid();
                drBat["FunctionName"]    = method.Name;
                drBat["InterfaceName"]   = interfaceName;
                drBat["interfaceCode"]   = interfaceCode;
                drBat["RequestBody"]     = requestBody;
                drBat["ResponseBody"]    = responseBody;
                drBat["ResponseCode"]    = ResponseCode;
                drBat["ResponseMessage"] = string.IsNullOrEmpty(ResponseMessage) ? "" : ResponseMessage;
                bd.Rows.Add(drBat);
                DataRowsSaveResult drsr = bd.SaveToDB(null, null);
            }

            return(content);
        }
示例#7
0
        /// <summary>
        /// 实时接口 POST请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="interfaceCode"></param>
        /// <param name="interfaceName"></param>
        /// <param name="PostObj"></param>
        /// <returns></returns>
        public static IRestResponse <T> PostExcute <T>(DataRow InterfaceURLRow, string interfaceName, object PostObj) where T : class, new()
        {
            //BDOs tmpInterFaceConfig = new BDOs("SYS_InterfaceURL", "INTERFACECODE = '"+ interfaceCode+"'");
            if (InterfaceURLRow == null)
            {
                throw new ApplicationException("接口地址未配置!");
            }
            string InterfaceURL = InterfaceURLRow["URL"].ToString();

            if (string.IsNullOrEmpty(InterfaceURL))
            {
                throw new ApplicationException("接口地址未配置!");
            }


            string interfaceCode = InterfaceURLRow["INTERFACECODE"].ToString();
            var    client        = new RestClient(InterfaceURL);
            var    request       = new RestRequest(Method.POST)
            {
                RequestFormat = DataFormat.Json
            };

            request.AddJsonBody(PostObj);
            request.AddHeader("Content-Type", "application/json; charset=utf-8");

            var content = client.Execute <T>(request);


            string requestBody = JsonConvert.SerializeObject(PostObj);

            requestBody = requestBody.Replace("\\\\", "\\");
            string responseBody = content.Content;

            StackTrace trace  = new StackTrace();
            StackFrame frame  = trace.GetFrame(1);
            MethodBase method = frame.GetMethod();

            //String className = method.ReflectedType.Name;


            if (content.StatusCode != System.Net.HttpStatusCode.OK)
            {
                var  hi    = AppCache.GetCache <RequestHeaderInfo>(Thread.CurrentThread.ManagedThreadId);
                Task task1 = new Task(() =>
                {
                    var ai = new RequestHeaderInfo(hi.LangNo, hi.DBNo, hi.MenuNo, hi.UserNo, hi.UserName, "");
                    AppCache.Add(Thread.CurrentThread.ManagedThreadId, ai);

                    BDO bd1                   = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                    DataRow drBat1            = bd1.NewRow();
                    drBat1["IsIn"]            = 1;
                    drBat1["SerialNo"]        = Guid.NewGuid();
                    drBat1["FunctionName"]    = method.Name;
                    drBat1["InterfaceName"]   = interfaceName;
                    drBat1["interfaceCode"]   = interfaceCode;
                    drBat1["RequestBody"]     = requestBody;
                    drBat1["ResponseBody"]    = responseBody;
                    drBat1["ResponseCode"]    = "E";
                    drBat1["ResponseMessage"] = content.Content;
                    drBat1["CREATETIME"]      = DateTime.Now;
                    bd1.Rows.Add(drBat1);
                    DataRowsSaveResult drsr1 = bd1.SaveToDB();
                    if (!drsr1.Success)
                    {
                        throw new Exception(drsr1.ErrorText);
                    }
                });
                task1.Start();
                task1.Wait();
            }
            else
            {
                var ResponseCode    = string.Empty;
                var ResponseMessage = string.Empty;
                var ZGUID           = string.Empty;
                try
                {
                    T model = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(responseBody);
                    if (model == null)
                    {
                        throw new ApplicationException("返回信息解析失败:" + InterfaceURL + "->" + responseBody);
                    }
                    if (content.Data == null)
                    {
                        content.Data = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(responseBody);
                    }
                }
                catch (Exception ex)
                {
                    ResponseCode    = "N/A";
                    ResponseMessage = string.IsNullOrEmpty(responseBody) ? ex.Message : responseBody;
                }

                var hi = AppCache.GetCache <RequestHeaderInfo>(Thread.CurrentThread.ManagedThreadId);


                Task task1 = new Task(() =>
                {
                    var ai = new RequestHeaderInfo(hi.LangNo, hi.DBNo, hi.MenuNo, hi.UserNo, hi.UserName, "");
                    AppCache.Add(Thread.CurrentThread.ManagedThreadId, ai);

                    BDO bd1                   = new BDO(null, null, "SYS_InterfaceLog", "1<>1");
                    DataRow drBat1            = bd1.NewRow();
                    drBat1["IsIn"]            = 1;
                    drBat1["SerialNo"]        = Guid.NewGuid();
                    drBat1["FunctionName"]    = method.Name;
                    drBat1["InterfaceName"]   = interfaceName;
                    drBat1["interfaceCode"]   = interfaceCode;
                    drBat1["RequestBody"]     = requestBody;
                    drBat1["ResponseBody"]    = responseBody;
                    drBat1["ResponseCode"]    = ResponseCode;
                    drBat1["ResponseMessage"] = string.IsNullOrEmpty(ResponseMessage) ? "" : ResponseMessage;
                    drBat1["CREATETIME"]      = DateTime.Now;
                    bd1.Rows.Add(drBat1);
                    DataRowsSaveResult drsr1 = bd1.SaveToDB();
                    if (!drsr1.Success)
                    {
                        throw new Exception(drsr1.ErrorText);
                    }
                });
                task1.Start();
                task1.Wait();
            }

            return(content);
        }