Beispiel #1
0
        public static void InitSystemSettings()
        {
            try
            {
                //ServiceLocator.SystemSettings = XMLUtil.XmlDeserialize<SystemSettingsInfo>(
                //    ConfigureFile.GetXML(SystemFilePath.FilePathSystemSetting),
                //    "SystemSettings");

                string currentDirectory = System.IO.Directory.GetCurrentDirectory();

                DirectoryInfo currentFolder = new DirectoryInfo(currentDirectory);
                FileInfo[]    files         = currentFolder.GetFiles();
                if (files.Length > 0)
                {
                    foreach (var file in files)
                    {
                        if (".xlsx".Equals(file.Extension, StringComparison.OrdinalIgnoreCase) || ".xls".Equals(file.Extension, StringComparison.OrdinalIgnoreCase))
                        {
                            string    message   = "";
                            DataSet   dataSet   = ExcelToDataSet(file.FullName, out message);
                            DataTable dataTable = dataSet.Tables[0];

                            string name = dataTable.Rows[2]["A"].ToString();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                WXLog.Error("读取系统参数配置文件失败", ex);
                throw new Exception(ex.Message);
            }
        }
Beispiel #2
0
        public WXLog GetWXLog(string strWhere)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("SELECT Top 1 * from Ecshop_WXLog ");
            if (!string.IsNullOrEmpty(strWhere))
            {
                strSql.Append(" WHERE ");
                strSql.Append(strWhere);
            }
            WXLog     log = new WXLog();
            DbCommand sqlStringCommand = this.database.GetSqlStringCommand(strSql.ToString());

            using (IDataReader dataReader = this.database.ExecuteReader(sqlStringCommand))
            {
                while (dataReader.Read())
                {
                    if (System.DBNull.Value != dataReader["Id"])
                    {
                        log.Id = (int)dataReader["Id"];
                    }
                    if (System.DBNull.Value != dataReader["AddTime"])
                    {
                        log.AddTime = DateTime.Parse(dataReader["AddTime"].ToString());
                    }
                    if (System.DBNull.Value != dataReader["UpdateTime"])
                    {
                        log.UpdateTime = DateTime.Parse(dataReader["UpdateTime"].ToString());
                    }
                    if (System.DBNull.Value != dataReader["StartTime"])
                    {
                        log.StartTime = DateTime.Parse(dataReader["StartTime"].ToString());
                    }
                    if (System.DBNull.Value != dataReader["EndTime"])
                    {
                        log.EndTime = DateTime.Parse(dataReader["EndTime"].ToString());
                    }
                    if (System.DBNull.Value != dataReader["Type"])
                    {
                        log.Type = Convert.ToInt32(dataReader["Type"]);
                    }
                    if (System.DBNull.Value != dataReader["Remark"])
                    {
                        log.Remark = dataReader["Remark"].ToString();
                    }
                    else
                    {
                        log.Remark = "";
                    }
                    if (System.DBNull.Value != dataReader["IsSuccess"])
                    {
                        log.IsSuccess = (bool)dataReader["IsSuccess"];
                    }
                }
            }
            return(log);
        }
Beispiel #3
0
        public bool UpdateLog(WXLog log)
        {
            DbCommand sqlStringCommand = this.database.GetSqlStringCommand("Update Ecshop_WXLog set  [UpdateTime]=@UpdateTime,[Remark]=@Remark,[IsSuccess]=@IsSuccess Where Id=@Id");

            this.database.AddInParameter(sqlStringCommand, "UpdateTime", DbType.DateTime, log.UpdateTime);
            this.database.AddInParameter(sqlStringCommand, "Remark", DbType.String, log.Remark);
            this.database.AddInParameter(sqlStringCommand, "IsSuccess", DbType.Boolean, log.IsSuccess);
            this.database.AddInParameter(sqlStringCommand, "Id", DbType.Int32, log.Id);
            return(this.database.ExecuteNonQuery(sqlStringCommand) > 0);
        }
Beispiel #4
0
 /// <summary>
 /// POST方式请求
 /// </summary>
 /// <param name="postdate"></param>
 /// <param name="url"></param>
 /// <returns></returns>
 public static string WebPost(string postdate, string url, int posTime = 10000) //在没有传参的情况下赋值默认值
 {
     if (TokenInfo.TokenDateTime < DateTime.Now)
     {
         if (!GetToken())
         {
             return("{\"Result\":\"FAILURE\",\"Message\":\"获取Token失败\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":\"false\"}");
         }
     }
     WXLog.Info("开始发送数据" + postdate);
     return(WebService(postdate, url, posTime));
 }
Beispiel #5
0
        /// <summary>
        /// 获取请求的内容
        /// </summary>
        /// <param name="request">请求</param>
        /// <returns>返回内容</returns>
        public static string GetRequestContent(HttpRequest request)
        {
            string content = string.Empty;

            byte[] bytes = request.BinaryRead(request.ContentLength);
            if (bytes != null && bytes.Length > 0)
            {
                content = request.ContentEncoding.GetString(bytes);
            }
            WXLog.Write(content, "获得的post请求数据" + DateTime.Now.ToString("ddHHmmss"));
            return(content);
        }
Beispiel #6
0
        public bool InsertLog(WXLog log)
        {
            DbCommand sqlStringCommand = this.database.GetSqlStringCommand("INSERT INTO [Ecshop_WXLog]([AddTime],[UpdateTime],[StartTime],[EndTime],[Type],[Remark],[IsSuccess]) VALUES(@AddTime,@UpdateTime,@StartTime,@EndTime,@Type,@Remark,@IsSuccess)");

            this.database.AddInParameter(sqlStringCommand, "AddTime", DbType.DateTime, log.AddTime);
            this.database.AddInParameter(sqlStringCommand, "StartTime", DbType.DateTime, log.StartTime);
            this.database.AddInParameter(sqlStringCommand, "UpdateTime", DbType.DateTime, log.UpdateTime);
            this.database.AddInParameter(sqlStringCommand, "EndTime", DbType.String, log.EndTime);
            this.database.AddInParameter(sqlStringCommand, "Type", DbType.String, log.Type);
            this.database.AddInParameter(sqlStringCommand, "Remark", DbType.String, log.Remark);
            this.database.AddInParameter(sqlStringCommand, "IsSuccess", DbType.Boolean, log.IsSuccess);
            return(this.database.ExecuteNonQuery(sqlStringCommand) > 0);
        }
Beispiel #7
0
        public void Alldown(List <TelRecord> tels)
        {
            WebClient download = new WebClient();
            DateTime  endtime  = DateTime.Now.AddDays(-31);
            var       pp       = (from oo in _basicInfor.Record
                                  where oo.Downtime > endtime
                                  select oo).ToList();

            foreach (var tel in tels)
            {
                var rec = pp.FindAll(p => p.CallTTnO == tel.calltono & p.StartTime == tel.starttime.ToString("yyyy-MM-dd HH:mm:ss"));
                if (rec.Count > 0)
                {
                    continue;
                }
                try
                {
                    if (string.IsNullOrEmpty(tel.path))
                    {
                        continue;
                    }
                    string path = Path.Combine(CurrUserLogin.downloaddir, tel.calltono + " " + tel.starttime.ToString("yyyy-MM-dd HH:mm:ss") + ".mp3");
                    download.DownloadFile(tel.path, path);
                    Record record = new Record();
                    record.ID        = Guid.NewGuid().ToString();
                    record.StartTime = tel.starttime.ToString("yyyy-MM-dd HH:mm:ss");
                    record.CallTTnO  = tel.calltono;
                    record.URL       = tel.path;
                    record.Downtime  = DateTime.Now;
                    record.MD5       = tel.md5;
                    record.Path      = path;
                    if (_basicInfor.Connection.State == ConnectionState.Closed)
                    {
                        _basicInfor.Connection.Open();
                    }
                    _basicInfor.Record.InsertOnSubmit(record);
                    CurrUserLogin.dowload.Add(record);
                }
                catch (Exception e)
                {
                    WXLog.Error("下载" + tel.path + "文件出错", e);
                }
            }
            CurrUserLogin.lastupdatetime = DateTime.Now;
            SaveOpt("lastupdatetime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            if (_basicInfor.Connection.State == ConnectionState.Closed)
            {
                _basicInfor.Connection.Open();
            }
            _basicInfor.SubmitChanges();
        }
Beispiel #8
0
 static void Main()
 {
     try
     {
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);
         StartingUtil.InitSystemSettings();
         //StartingUtil.CheckDbVersion();
         Application.Run(new Mainform());
     }catch (Exception e)
     {
         WXLog.Error("程序发生错误", e);
     }
 }
Beispiel #9
0
        public bool SaveSystemSettinsConfig()
        {
            bool bReturn = false;

            try
            {
                bReturn = SaveXML(XMLUtil.XmlSerialize <SystemSettingsInfo>(ServiceLocator.SystemSettings, "SystemSettings"),
                                  SystemFilePath.FilePathSystemSetting);
            }
            catch (Exception ex)
            {
                WXLog.Error("保存系统配置失败", ex);
                throw new Exception("保存系统配置失败");
            }
            return(bReturn);
        }
Beispiel #10
0
        private static bool AddTable(string sql, string tablename)
        {
            bool isSuccess = true;

            try
            {
                int a = SQLiteHelper.ExecuteNonQuery(sql);
            }
            catch (System.Data.SQLite.SQLiteException ex)
            {
                string a = ex.Message;
                if (a.Contains("already exists"))
                {
                    isSuccess = true;
                    WXLog.Info(tablename + "已添加");
                }
                else if (a.Contains("duplicate"))
                {
                    isSuccess = true;
                    WXLog.Info(tablename + "已添加");
                }
                else
                {
                    isSuccess = false;
                    WXLog.Info("添加" + tablename + "失败,发生错误" + a);
                }
            }
            catch (Exception e)
            {
                isSuccess = false;
                WXLog.Info("添加" + tablename + "失败");
            }
            if (isSuccess)
            {
                WXLog.Info("添加" + tablename + "完成");
            }
            return(isSuccess);
        }
Beispiel #11
0
        /// <summary>
        /// 获取Token的方法
        /// </summary>
        /// <returns></returns>
        public static bool GetToken()
        {
            WXLog.Info("开始获取Token");
            string postData = "{\"appId\":\"" + ConfigurationManager.AppSettings["appId"] + "\",\"appSecret\":\"" + ConfigurationManager.AppSettings["appSecret"] + "\"}";

            try
            {
                string    json  = WebService(postData, PosServiceConfig.GetTokenUrl);
                TokenData token = Tools.JsonToObject <TokenData>(json);
                if (token != null && token.data.accessToken != null)
                {
                    TokenInfo.TokenEd       = token.data;
                    TokenInfo.TokenDateTime = DateTime.Now.AddSeconds(token.data.expiresIn - 2);
                    WXLog.Info("获取到Token");
                }
                else
                {
                    token = new TokenData();
                    token.data.accessToken  = "";
                    TokenInfo.TokenEd       = token.data;
                    TokenInfo.TokenDateTime = DateTime.Now;
                    WXLog.Info("未获取到Token");
                    return(false);
                }
            }
            catch (Exception e)
            {
                Token token = new Token();
                token.accessToken       = "";
                TokenInfo.TokenEd       = token;
                TokenInfo.TokenDateTime = DateTime.Now;
                WXLog.Info("获取Token出错");
                return(false);
            }

            return(true);
        }
Beispiel #12
0
 public static bool InsertLog(WXLog log)
 {
     return(new WXLogDao().InsertLog(log));
 }
Beispiel #13
0
 public static bool UpdateLog(WXLog log)
 {
     return(new WXLogDao().UpdateLog(log));
 }
Beispiel #14
0
 private void DoWork(object sender, DoWorkEventArgs e)
 {
     lock (updateLocker)
     {
         try
         {
             WXLog.Debug("LiveUpdate DoWork Start。");
             if (!Directory.Exists(CurrUserLogin.lastdownloaddir))
             {
                 Directory.CreateDirectory(CurrUserLogin.lastdownloaddir);
             }
             /* 开始下载更新文件*/
             float progress = 0;
             try
             {
                 string path = Path.Combine(CurrUserLogin.lastdownloaddir, tel.calltono + " " + tel.starttime.ToString("yyyy-MM-dd HH:mm:ss") + ".mp3");
                 System.Net.HttpWebRequest  Myrq      = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(tel.path);
                 System.Net.HttpWebResponse myrp      = (System.Net.HttpWebResponse)Myrq.GetResponse();
                 long             totalBytes          = myrp.ContentLength;
                 System.IO.Stream st                  = myrp.GetResponseStream();
                 System.IO.Stream so                  = new System.IO.FileStream(path, System.IO.FileMode.Create);
                 long             totalDownloadedByte = 0;
                 byte[]           by                  = new byte[1024];
                 this.Invoke(new ThreadStart(delegate()
                 {
                     pgbProgress.Visible = true;
                 }));
                 int osize = st.Read(by, 0, (int)by.Length);
                 while (osize > 0)
                 {
                     totalDownloadedByte = osize + totalDownloadedByte;
                     System.Windows.Forms.Application.DoEvents();
                     so.Write(by, 0, osize);
                     osize    = st.Read(by, 0, (int)by.Length);
                     progress = (float)totalDownloadedByte / (float)totalBytes * 100;
                     this.Invoke(new ThreadStart(delegate()
                     {
                         pgbProgress.Value = Convert.ToInt32(progress);
                     }));
                 }
                 so.Close();
                 st.Close();
                 this.Invoke(new ThreadStart(delegate()
                 {
                     trl.SaveDownloadToDB(tel, path);
                     MessageBox.Show("下载完成!");
                     this.Close();
                 }));
             }
             catch (System.Exception exc)
             {
                 WXLog.Error("LiveUpdateController.DoWork failed,", exc);
                 Thread.Sleep(2000);
                 this.Invoke(new ThreadStart(delegate()
                 {
                     MessageBox.Show("下载失败:" + exc.Message);
                 }));
                 //return;
             }
         }
         catch (Exception ex)
         {
             WXLog.Error("LiveUpdateController.DoWork failed,", ex);
             Thread.Sleep(2000);
         }
     }
 }
Beispiel #15
0
        public void Execute(XmlNode node)
        {
            ErrorLog.Write("start go WXMsgRecordJob");
            DateTime startTime = DateTime.Now;
            DateTime endTime   = DateTime.Now;
            int      pageSize  = 50;
            bool     update    = false;
            WXLog    log       = WXHelper.GetWXLog("IsSuccess=0 ORDER BY StartTime ASC");

            if (log.Id != 0)
            {
                update    = true;
                startTime = log.StartTime;
            }
            else
            {
                log = WXHelper.GetWXLog("IsSuccess=1 ORDER BY StartTime DESC");
                if (log.Id != 0)
                {
                    if (log.StartTime.Date.AddDays(1) == DateTime.Now.Date)
                    {
                        return;
                    }
                    startTime = log.EndTime.AddSeconds(1);
                }
                else
                {
                    startTime = startTime.AddDays(-1).Date;
                }
            }
            endTime = startTime.Date.AddDays(1).AddSeconds(-1);


            SiteSettings masterSettings = SettingsManager.GetMasterSettings(false);
            WebUtils     webUtils       = new WebUtils();
            string       returnString   = string.Empty;
            DataTable    dtMsg          = CreateEmptyDataTable();
            DataRow      dr             = null;

            for (int i = 0; i < 2147483647; i++)
            {
                StringBuilder strJson = new StringBuilder();
                strJson.Append("{");
                strJson.AppendFormat("\"endtime\":{0},", DataHelper.ConvertUniversalTime(endTime));
                strJson.AppendFormat("\"pageindex\":{0},", i + 1);
                strJson.AppendFormat("\"pagesize\":{0},", pageSize);
                strJson.AppendFormat("\"starttime\":{0}", DataHelper.ConvertUniversalTime(startTime));
                strJson.Append("}");
                ErrorLog.Write("请求微信服务器,获取客服聊天记录" + strJson.ToString());
                returnString = webUtils.DoPost(string.Format(wx_MsgRecord_URL, TokenApi.GetToken_Message(masterSettings.WeixinAppId, masterSettings.WeixinAppSecret)), strJson.ToString());
                ErrorLog.Write(returnString);
                WXMsgPackage package = null;
                try
                {
                    package = Newtonsoft.Json.JsonConvert.DeserializeObject <WXMsgPackage>(returnString);
                }
                catch (Exception ex)
                {
                    ErrorLog.Write(ex.ToString());
                }

                if (package == null || package.RecordList == null || package.RecordList.Length == 0)
                {
                    break;
                }

                foreach (WXMsgRecord record in package.RecordList)
                {
                    dr             = dtMsg.NewRow();
                    dr["Id"]       = i;
                    dr["OpenId"]   = record.OpenId;
                    dr["OperCode"] = record.OperCode;
                    dr["Text"]     = record.Text;
                    dr["Worker"]   = record.Worker;
                    if (string.IsNullOrEmpty(record.Worker) || record.Worker.Trim() == "")
                    {
                        dr["WorkerNo"] = "";
                    }
                    else
                    {
                        dr["WorkerNo"] = record.Worker.Substring(0, record.Worker.IndexOf('@'));
                    }
                    DateTime d = DataHelper.ConvertTimeFromUniversal(record.UniversalTime);
                    dr["Time"]        = d;
                    dr["HappenDate"]  = d.Date;
                    dr["HappenMonth"] = d.ToString("yyyy-MM");
                    dtMsg.Rows.Add(dr);
                }
                //break;
            }
            WXLog newLog = new WXLog();

            newLog.AddTime    = DateTime.Now;
            newLog.UpdateTime = DateTime.Now;
            newLog.StartTime  = startTime;
            newLog.EndTime    = endTime;
            newLog.Type       = 1;
            if (dtMsg.Rows.Count <= 0)
            {
                newLog.IsSuccess = true;
                newLog.Remark    = "当前查询时间没有记录";
                WXHelper.InsertLog(newLog);
                return;
            }

            bool b = WXHelper.BathAddWXMsgRecord(dtMsg);

            ErrorLog.Write(Newtonsoft.Json.JsonConvert.SerializeObject(newLog));
            if (b)
            {
                newLog.IsSuccess = true;
                if (update)
                {
                    newLog.Id     = log.Id;
                    newLog.Remark = "修复聊天记录成功";
                    WXHelper.UpdateLog(newLog);
                }
                else
                {
                    newLog.Remark = "更新聊天记录完成";
                    WXHelper.InsertLog(newLog);
                }
            }
            else
            {
                newLog.IsSuccess = false;
                if (update)
                {
                    newLog.Id     = log.Id;
                    newLog.Remark = "修复聊天记录失败";
                    WXHelper.UpdateLog(newLog);
                }
                else
                {
                    newLog.Remark = "更新聊天记录失败";
                    WXHelper.InsertLog(newLog);
                }
            }
        }
Beispiel #16
0
        /// <summary>
        /// Get方式请求
        /// </summary>
        /// <param name="postdate"></param>
        /// <param name="url"></param>
        /// <param name="timeOut"></param>
        /// <returns></returns>
        public static string WebGet(string postdate, string url, int timeOut = 10)
        {
            string responseText = String.Empty;

            try
            {
                if (TokenInfo.TokenDateTime < DateTime.Now)
                {
                    if (!GetToken())
                    {
                        responseText =
                            "{\"Result\":\"FAILURE\",\"Message\":\"获取Token失败\",\"error\":\"获取Token失败\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                        return(responseText);
                    }
                }
                url += postdate + "&accessToken=" + TokenInfo.TokenEd.accessToken;
                WXLog.Info("Get请求的URL" + url + "请求开始");
                HttpWebRequest request;
                // 创建一个HTTP请求
                //url = HttpUtility.UrlEncode(url, System.Text.Encoding.UTF8);
                request         = (HttpWebRequest)WebRequest.Create(url);
                request.Method  = "get";
                request.Timeout = timeOut * 1000;
                HttpWebResponse response;
                response = (System.Net.HttpWebResponse)request.GetResponse();
                StreamReader myreader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);
                responseText = myreader.ReadToEnd();
                //   Console.WriteLine("responseText"+responseText);
                WXLog.Info("请求结束,返回结果" + responseText);
                myreader.Close();
            }
            catch (WebException ex)
            {
                WXLog.Error("HTTP发送数据失败:", ex);
                switch (ex.Status)
                {
                case WebExceptionStatus.NameResolutionFailure:
                    responseText = "{\"Result\":\"FAILURE\",\"Message\":\"未找到服务器,请检查网络设置\",\"error\":\"未找到服务器,请检查网络设置\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;

                case WebExceptionStatus.ConnectFailure:
                    responseText = "{\"Result\":\"FAILURE\",\"Message\":\"与服务器链接失败,请检查网络设置\",\"error\":\"与服务器链接失败,请检查网络设置\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;

                case WebExceptionStatus.Timeout:
                    responseText = "{\"Result\":\"FAILURE\",\"Message\":\"请求超时,请重试\",\"NewData\":\"false\",\"error\":\"请求超时,请重试\",\"success\":\"false\",\"isSuccess\":false}";
                    break;

                //*************20160506 add by zxy 捕获到协议级错误时,将token过期时间置为当前,便于下次直接请求
                case WebExceptionStatus.ProtocolError:
                    TokenInfo.TokenDateTime = DateTime.Now;
                    responseText            = "{\"Result\":\"FAILURE\",\"Message\":\"" + ex.Status + ",请重试\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;

                default:
                    responseText = "{\"Result\":\"FAILURE\",\"Message\":\"" + ex.Message + "\",\"error\":\"" + ex.Message + "\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;
                }
            }
            catch (Exception ex)
            {
                responseText = "{\"Result\":\"FAILURE\",\"Message\":\"" + ex.Message +
                               "\",\"error\":\"" + ex.Message +
                               "\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                WXLog.Error("Get请求失败", ex);
            }
            return(responseText);
        }
Beispiel #17
0
        /// <summary>
        /// POST基础方法
        /// 流水上传为50秒超时,其他的为10秒
        /// </summary>
        /// <param name="postData"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string WebService(string postData, string url, int posTime = 10000)//在没有传参的情况下赋值默认值
        {
            WXLog.Info("WebService Start");

            string json = "{\"Result\":\"FAILURE\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";

            //创建HttpWebRequest对象
            try
            {
                //     WXLog.Debug("SendRestRequest WebService Start");
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); //目标主机ip地址

                //模拟POST的数据
                Encoding utf8 = Encoding.UTF8;
                byte[]   data = utf8.GetBytes(postData);
                request.Method      = "POST";
                request.ContentType = "application/json;charset=UTF-8;";
                if (TokenInfo.TokenEd != null && TokenInfo.TokenEd.accessToken != "")
                {
                    request.Headers.Add("Authorization", TokenInfo.TokenEd.accessToken);
                    request.Headers.Add("CORP_ID", ConfigurationManager.AppSettings["CORP_ID"]); //企业ID 从配置文件中读取
                }
                request.Timeout       = posTime;                                                 //超时10秒之后进行提示,这是全部的
                request.ContentLength = data.Length;
                using (Stream newStream = request.GetRequestStream())
                {
                    newStream.Write(data, 0, data.Length);
                    newStream.Close();
                }
                //获得HttpWebResponse对象
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                WXLog.Debug("SendRestRequest WebService End");
                if (response.StatusCode.ToString() != "OK")
                {
                    WXLog.Error("服务器响应失败,response.StatusCode=【" + response.StatusCode.ToString() + "】");
                    //         throw new DataAccessException(WSMessageCode.SendFailed.ToString());
                }
                //获得响应流
                Stream receiveStream = response.GetResponseStream();
                if (receiveStream != null)
                {
                    StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
                    json = readStream.ReadToEnd();
                    WXLog.Info("返回数据" + json);
                    //       Console.WriteLine(json);
                    response.Close();
                    receiveStream.Close();
                    readStream.Close();
                }
            }
            catch (WebException ex)
            {
                WXLog.Error("HTTP发送数据失败:", ex);
                switch (ex.Status)
                {
                case WebExceptionStatus.NameResolutionFailure:
                    json = "{\"Result\":\"FAILURE\",\"Message\":\"未找到服务器,请检查网络设置\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;

                case WebExceptionStatus.ConnectFailure:
                    json = "{\"Result\":\"FAILURE\",\"Message\":\"与服务器链接失败,请检查网络设置\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;

                case WebExceptionStatus.Timeout:
                    json = "{\"Result\":\"FAILURE\",\"Message\":\"请求超时,请重试\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;

                //*************20160506 add by zxy 捕获到协议级错误时,将token过期时间置为当前,便于下次直接请求
                case WebExceptionStatus.ProtocolError:
                    TokenInfo.TokenDateTime = DateTime.Now;
                    json = "{\"Result\":\"FAILURE\",\"Message\":\"" + ex.Message + ",请重试\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;

                default:
                    json = "{\"Result\":\"FAILURE\",\"Message\":\"" + ex.Message + "\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
                    break;
                }
            }
            catch (Exception ex)
            {
                WXLog.Error("HTTP发送数据失败:", ex);
                json = "{\"Result\":\"FAILURE\",\"Message\":\"" + ex.Message + "\",\"NewData\":\"false\",\"success\":\"false\",\"isSuccess\":false}";
            }
            finally
            {
                WXLog.Info("SendRestRequest End");
            }

            return(json);
        }
Beispiel #18
0
 public ActionResult Index()
 {
     WXLog.WriteLog("111111");
     return(base.View());
 }
        /// <summary>
        /// 从xml字符串解析消息
        /// </summary>
        /// <param name="xml">xml字符串</param>
        /// <returns>返回消息</returns>
        public static RequestBaseMessage Parse(string xml)
        {
            try
            {
                RequestBaseMessage msg = null;
                //将xml字符串解析成JObject对象
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xml);
                string  json    = JsonConvert.SerializeXmlNode(doc);
                JObject jo      = (JObject)JObject.Parse(json)["xml"];
                string  MsgType = (string)jo["MsgType"][CDATA_KEY];
                WXLog.Write(MsgType, "进来" + MsgType + "事件了");
                //解析消息基类
                msg = ParseBaseMessage(jo);
                ErrorMessage  e = null;
                BatchMeterial b = MyWay.Areas.WeiXin.Meterial.Meterial.BatchGet("测试公众号", MultiMediaTypeEnum.news, 0, 2, out e);
                //获取各分类的字段,并构造消息
                switch (msg.MsgType)
                {
                case RequestMessageTypeEnum.text:
                    string content = (string)jo["Content"][CDATA_KEY];
                    if (content == "天气")
                    {
                        msg = ParseImageMessage1(msg, jo, "https://mmbiz.qlogo.cn/mmbiz/D1aYATIFatWdxfb99IPptNDj3vqCiaSLpspegmdU4IFpRd40oqctN9gI9g2EZE4qq5eTqEAP2Xjb9J0onD5nNWQ/0?wx_fmt=jpeg", "nxoGNdQHF7AWPDlpfGZQ9_TkxdCdC3rUe0CbGZ5Ss5Y");
                    }
                    else if (content == "时间")
                    {
                        msg = ParseTextMessage1(msg, jo);
                    }
                    else
                    {
                        msg = ParseTextMessage(msg, jo);
                    }
                    break;

                case RequestMessageTypeEnum.image:
                    msg = ParseImageMessage(msg, jo);
                    break;

                case RequestMessageTypeEnum.voice:

                    msg = ParseVoiceMessage(msg, jo);
                    break;

                case RequestMessageTypeEnum.video:
                    msg = ParseVideoMessage(msg, jo);
                    break;

                case RequestMessageTypeEnum.location:
                    msg = ParseLocationMessage(msg, jo);
                    break;

                case RequestMessageTypeEnum.link:
                    msg = ParseLinkMessage(msg, jo);
                    break;

                case RequestMessageTypeEnum.Event:
                    msg = ParseEventMessage(msg, jo);
                    break;

                default:
                    throw new NotImplementedException(string.Format("未实现消息类型{0:g}解析。", msg.MsgType));
                }
                //返回
                return(msg);
            }
            catch (Exception ex)
            {
                Log.WriteFile(ex);
                throw;
            }
        }