HttpManager.cs 10.3 KB
using Common;
using RestSharp;
using System;
using System.Collections.Generic;
using System.Drawing;

namespace DeviceLibrary
{
    public class HttpManager
    {
        public static bool CheckIP(string name, string ip)
        {
            //IP合法
            string pattern = @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$";
            bool rtn = System.Text.RegularExpressions.Regex.IsMatch(ip, pattern);
            if (!rtn)
            {
                log.Error("非法的IP地址" + ip);
                return false;
            }

            //Ping服务端
            try
            {
                System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
                System.Net.NetworkInformation.PingReply result = ping.Send(ip, 2000);
                ping.Dispose();
                if (result.Status != System.Net.NetworkInformation.IPStatus.Success)
                {
                    log.Error(name + " Ping " + ip + " 请求没有响应");
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                log.Error("CheckIP", ex);
                return false;
            }
        }
        private static log4net.ILog log = log4net.LogManager.GetLogger("HttpManager");

        /// <summary>
        /// 大料车接口回复
        /// </summary>
        public class Msg
        {
            public string msg { get; set; }
        }

        private static string Addr_updateDeviceAlarmMsg = "/rest/api/qisda/device/updateDeviceAlarmMsg";
        /// <summary>
        /// 异常看板
        /// </summary>
        /// <param name="msgList"></param>
        /// <returns></returns>
        public static string updateDeviceAlarmMsg(List<AlarmMsg> msgList)
        {
            string msg = "";
            try
            {
                if (msgList.Count.Equals(0)) return "";
                Dictionary<string, string> paramMap = new Dictionary<string, string>();
                string msgListStr = JsonHelper.SerializeObject(msgList);
                paramMap.Add("deviceAlarmList", msgListStr);
                string server = GetAddr(Addr_updateDeviceAlarmMsg, paramMap);
                DateTime startTime = DateTime.Now;
                string resultStr = HttpHelper.Post(server, "");
                msgList.ForEach(new Action<AlarmMsg>(k => log.Debug("deviceAlarmList " + k.ToString())));

                RfidData data = JsonHelper.DeserializeJsonToObject<RfidData>(resultStr);

                if (data == null)
                {
                    return msg = " updateDeviceAlarmMsg 没有收到服务器反馈";
                }
                else if (data.code.Equals(0).Equals(false))
                {
                    return msg = "【" + server + "】【" + resultStr + "】" + data.msg;
                }
                return "";
            }
            catch (Exception ex)
            {
                log.Error(ex);
            }
            return msg;
        }
        private static string GetAddr(string addr, Dictionary<string, string> paramsMap)
        {
            string server = AppConfigHelper.GetValue(SettingString.httpServer);
            if (server.EndsWith("/"))
            {
                server = server.Substring(0, server.Length - 1);
            }
            string path = server + addr.Trim() + "?";
            foreach (string paramName in paramsMap.Keys)
            {
                string par = System.Web.HttpUtility.UrlEncode(paramsMap[paramName], System.Text.Encoding.UTF8);
                path += paramName + "=" + par + "&";
            }
            path = path.Substring(0, path.Length - 1);
            return path;
        }

         static string updateStatus = AppConfigHelper.GetValue(SettingString.Lift_Server)+"status";
        public static lift.LiftStatus UpdateStatusToLift(lift.ClientStatus clientStatus)
        {
            try
            {
                string resultStr = HttpHelper.Post(updateStatus, JsonHelper.SerializeObject(clientStatus));
                StatusResult data = JsonHelper.DeserializeJsonToObject<StatusResult>(resultStr);

                if (data == null)
                {
                    return null;
                }
                else
                {
                    return data.data;
                }
            }
            catch (Exception e)
            {
                log.Error("UpdateStatusToLift", e);
                return null;
            }
        }

         static string opendoor = AppConfigHelper.GetValue(SettingString.Lift_Server) + "openDoor";
        /// <summary>
        /// 开门操作
        /// </summary>
        /// <param name="doorInfo"></param>
        /// <returns></returns>
        public static bool OpenDoor(service.model.DoorInfo doorInfo)
        {
            try
            {
                string resultStr = HttpHelper.Post(opendoor, JsonHelper.SerializeObject(doorInfo));
                Result data = JsonHelper.DeserializeJsonToObject<Result>(resultStr);

                if (data == null)
                {
                    log.Warn($"OpenDoor fail:{JsonHelper.SerializeObject(doorInfo)}");
                    return false;
                }
                else
                {
                   if(data.code.Equals(0))
                    {
                        log.Info($"OpenDoor info:{JsonHelper.SerializeObject(doorInfo)},result:code={data.code},msg={data.msg},data={data.data}");
                        return true;
                    }
                   else
                    {
                        log.Warn($"OpenDoor info:{JsonHelper.SerializeObject(doorInfo)},result:code={data.code},msg={data.msg},data={data.data}");
                        return false;
                    }
                }
            }
            catch (Exception e)
            {
                log.Error("OpenDoor", e);
            }
            return false;
        }

         static string closedoor = AppConfigHelper.GetValue(SettingString.Lift_Server) + "closeDoor";
        /// <summary>
        /// 关门操作
        /// </summary>
        /// <param name="doorInfo"></param>
        /// <returns></returns>
        public static bool CloseDoor(service.model.DoorInfo doorInfo)
        {
            try
            {
                string resultStr = HttpHelper.Post(closedoor, JsonHelper.SerializeObject(doorInfo));
                Result data = JsonHelper.DeserializeJsonToObject<Result>(resultStr);

                if (data == null)
                {
                    log.Warn($"CloseDoor fail:{JsonHelper.SerializeObject(doorInfo)}");
                    return false;
                }
                else
                {
                    if (data.code.Equals(0))
                    {
                        log.Info($"CloseDoor info:{JsonHelper.SerializeObject(doorInfo)},result:code={data.code},msg={data.msg},data={data.data}");
                        return true;
                    }
                    else
                    {
                        log.Warn($"CloseDoor info:{JsonHelper.SerializeObject(doorInfo)},result:code={data.code},msg={data.msg},data={data.data}");
                        return false;
                    }
                }
            }
            catch (Exception e)
            {
                log.Error("CloseDoor", e);
            }
            return false;
        }

         static string sendIn = AppConfigHelper.GetValue(SettingString.Lift_Server) + "sendIn";
        public static bool RequestSendIn(service.model.SendInInfo send)
        {
            try
            {
                string resultStr = HttpHelper.Post(sendIn, JsonHelper.SerializeObject(send));
                Result data = JsonHelper.DeserializeJsonToObject<Result>(resultStr);

                if (data == null)
                {
                    log.Warn($"RequestSendIn fail:{JsonHelper.SerializeObject(send)}");
                    return false;
                }
                else
                {
                    if (data.code.Equals(0))
                    {
                        log.Info($"RequestSendIn info:{JsonHelper.SerializeObject(send)},result:code={data.code},msg={data.msg},data={data.data}");
                        return true;
                    }
                    else
                    {
                        log.Warn($"RequestSendIn info:{JsonHelper.SerializeObject(send)},result:code={data.code},msg={data.msg},data={data.data}");
                        return false;
                    }
                }
            }
            catch (Exception e)
            {
                log.Error("RequestSendIn", e);
            }
            return false;
        }
    }
    public class StatusResult
    {
        /// <summary>
        /// 状态码。0为正常。其他为异常。
        /// </summary>
        public int code { get; set; } = 0;
        /// <summary>
        /// 提示消息
        /// </summary>
        public string msg { get; set; } = "ok";
        /// <summary>
        /// 返回数据
        /// </summary>
        public lift.LiftStatus data { get; set; }
    }
    public class AlarmMsg
    {

        //>>>name :  异常位置名称
        public string name = "";
        //>>>msgKey :  异常信息唯一标识
        public string msgKey = "";
        //>>>msgValue :  异常信息
        public string msgValue = "";
        //0:异常;1:正常显示
        public int type = 0;

        /// <summary>
        /// 异常信息
        /// </summary>
        /// <param name="name">异常位置名称</param>
        /// <param name="key">异常信息唯一标识</param>
        /// <param name="value">异常信息</param>
        public AlarmMsg(string name, string key, string value, int type = 0)
        {
            this.name = name;
            this.msgKey = key;
            this.msgValue = value;
            this.type = type;
        }
        public override string ToString()
        {
            return string.Format("[name:{0},msgKey:{1},msgValue:{2},type:{3}]", name, msgKey, msgValue, type);
        }
    }
    public class RfidData
    {
        //{"code":0,"msg":"ok","data":"7"} 
        public int code { get; set; }

        public string msg { get; set; }

        public Dictionary<string, string> data { get; set; }
    }

}