/// <summary> ///利用ID获取设备信息 /// </summary> /// <returns></returns> public ReturnItem <RetDeviceInfo> GetDeviceInfo(GetDeviceInfoParameter parameter) { WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.DeviceApiUrl + "Api/EquipmentInfo/GetDeviceInfoInside" }; if (!string.IsNullOrEmpty(parameter.ID)) { wparameter.Content.Add("ID", parameter.ID.ToString());// 传递设备ID } if (!string.IsNullOrEmpty(parameter.DeviceLabel)) { wparameter.Content.Add("DeviceLabel", parameter.DeviceLabel); } if (!string.IsNullOrEmpty(parameter.Phone)) { wparameter.Content.Add("Phone", parameter.Phone); } if (!string.IsNullOrEmpty(parameter.OrgID)) { wparameter.Content.Add("OrgID", parameter.OrgID); } return(new WebApiHelper().GetEntity <RetDeviceInfo>(wparameter)); }
/// Post请求WebApi获得返回对象 /// </summary> /// <typeparam name="T">返回对象的具体类型</typeparam> /// <param name="parameter">请求对象</param> /// <param name="debug">出错是否输出错信息到ReturnItem.Message</param> /// <param name="mediaType">请求媒体类型</param> /// <param name="timeOut">超时时间设置 默认5秒 单位:秒</param> /// <returns></returns> public ReturnItem <T> GetEntity <T>(WebApiPostParameter parameter, bool debug = false, string mediaType = "application/json", int timeOut = 30) { if (CheckParameter(parameter)) { string outstr = ""; int tryintlimit = 5; //尝试5次 int tryint = 0; //以尝试次数 bool run = true; string responseJson = ""; #region //规避连接预热产生的超时问题 while (run) //规避连接预热产生的超时问题 { try { responseJson = Post(parameter, debug, mediaType, timeOut); try { var get = JsonHelper.JsonToEntity <ReturnItem <T> >(responseJson); run = false; return(get); } catch (Exception ex) { //反序列化失败 outstr = "错误:" + ex.Message; if (debug) { outstr = outstr + ",接收到的消息:" + responseJson; } log.Debug(outstr); return(new ReturnItem <T>() { Code = -1, Msg = outstr }); } } catch (Exception ex) { tryint = tryint + 1; if (tryint >= tryintlimit) { run = false; throw new Exception("已达重试次数:" + tryint + "/" + tryintlimit); //return new ReturnItem<T>() { Success = false, Message = "请求失败:超过最大请求次数" }; } Thread.Sleep(1000); } } return(null); #endregion } else { return(new ReturnItem <T>() { Code = -1, Msg = "请求失败:WebApePostParameter效验不通过" }); } }
public HttpResponseMessage Connect(WebApiPostParameter parameter, bool debug = false, string mediaType = "application/json", int timeOut = 30) { #region 通讯逻辑 using (HttpClient httpClient = new HttpClient()) { httpClient.Timeout = TimeSpan.FromSeconds(timeOut); var response = httpClient.SendAsync(new HttpRequestMessage { RequestUri = new Uri(parameter.Url) }); if (response.Result.IsSuccessStatusCode) { try { return(response.Result); } catch (Exception ex) { return(new System.Net.Http.HttpResponseMessage { }); } } return(new HttpResponseMessage { }); } #endregion }
internal string Post(WebApiPostParameter parameter, bool debug = false, string mediaType = "application/json", int timeOut = 30) { string r = ""; #region 通讯逻辑 using (HttpClient httpClient = new HttpClient()) { httpClient.Timeout = TimeSpan.FromSeconds(timeOut); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType)); HttpResponseMessage response = httpClient.PostAsync(parameter.Url, new FormUrlEncodedContent(parameter.Content)).Result; if (response.IsSuccessStatusCode) { try { r = response.Content.ReadAsStringAsync().Result; return(r); } catch (Exception ex) { return(new ReturnItem <object>() { Code = -1, Msg = ex.Message }.ToJson()); } } return(new ReturnItem <object>() { Code = -1, Msg = response.StatusCode.ToString() }.ToJson());; } #endregion }
/// <summary> /// 根据UserId获取用户信息 /// </summary> /// <returns></returns> public ReturnItem <RetUserLoginInfo> GetUserInfo(GetUserInfoParameter parameter) { WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.UserApiUrl + "Api/User/GetUserInfoInside" }; parameter.SetPostParameter(wparameter);//填充请求参数 return(new WebApiHelper().GetEntity <RetUserLoginInfo>(wparameter)); }
/// <summary> /// 检查请求参数.现在默认只检查Token /// </summary> /// <param name="parameter"></param> /// <returns></returns> bool CheckParameter(WebApiPostParameter parameter) { bool r = false; if (parameter.Content != null) { r = true; } return(r); }
public void SetPostParameter(WebApiPostParameter postParameter) { if (TokenId != null && TokenId != "") { postParameter.Content.Add("TokenID", TokenId.ToString()); } else { throw new Exception("Need TokenId"); } }
/// <summary> /// 根据数据连接ID获取连接信息 /// </summary> /// <param name="parameter"></param> /// <returns></returns> public ReturnItem <RetDataConnectConfiguration> GetDataConnect(IoTHubConfigurationModel parameter) { WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.DeviceApiUrl + "Api/EquipmentInfo/GetDataConnectInner" }; string connectInfo = JsonConvert.SerializeObject(parameter); wparameter.Content.Add("ID", parameter.ID.ToString()); return(new WebApiHelper().GetEntity <RetDataConnectConfiguration>(wparameter)); }
public ReturnItem <string> EnanbleDeviceService(EnableDeviceParmeter parameter) { WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.AlertApiUrl + "Api/AlertPolicies/EnableDeviceService" }; wparameter.Content.Add("IsEnable", parameter.IsEnable); wparameter.Content.Add("DeviceId", parameter.DeviceId); return(new WebApiHelper().GetEntity <string>(wparameter)); }
/// <summary> /// 添加报警信息 /// </summary> /// <returns></returns> public ReturnItem <string> AddAlarmMessage(GetMessageInfoParameter parameter) { WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.UserApiUrl + "Api/Message/AddAlarmMessageInside" }; wparameter.Content.Add("Type", parameter.Type); wparameter.Content.Add("Tittle", parameter.Tittle); wparameter.Content.Add("Text", parameter.Text); wparameter.Content.Add("OrgID", parameter.OrgID); return(new WebApiHelper().GetEntity <string>(wparameter)); }
/// <summary> /// 获取所有设备列表 /// </summary> /// <returns></returns> public ReturnItem <List <RetDeviceInfo> > GetAllDeviceList(GetDeviceInfoParameter parameter) { WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.DeviceApiUrl + "Api/EquipmentInfo/GetAllDeviceListInside" }; if (!string.IsNullOrEmpty(parameter.Status)) { wparameter.Content.Add("Status", parameter.Status); } return(new WebApiHelper().GetEntity <List <RetDeviceInfo> >(wparameter)); }
/// <summary> /// 获取报警策略个数 /// </summary> /// <returns></returns> public ReturnItem <string> GetAlertPoliciesNum() { string tokenId = ""; var getdic = JsonHelper.JsonToEntity <Hashtable>(HttpContext.Current.Request.Headers["tokenid"].ToBase64DecryptString()); tokenId = getdic["tokenid"].ToString(); WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.AlertApiUrl + "Api/AlertPolicies/GetAlertPoliciesNum" }; wparameter.Content.Add("TokenId", tokenId.ToString()); return(new WebApiHelper().GetEntity <string>(wparameter)); }
/// <summary> /// 获取设备实时数据 /// </summary> /// <returns></returns> public ReturnItem <List <RetDeviceCurrentData> > GetDeviceCurrentData(List <GetDeviceDataParameter> parameter) { var getdic = JsonHelper.JsonToEntity <Hashtable>(HttpContext.Current.Request.Headers["tokenid"].ToBase64DecryptString()); string tokenId = getdic["tokenid"].ToString(); WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.DeviceApiUrl + "Api/EquipmentData/GetDeviceCurrentDataInside" }; string DeviceInfo = JsonConvert.SerializeObject(parameter); wparameter.Content.Add("DeviceInfo", DeviceInfo); wparameter.Content.Add("TokenID", tokenId); return(new WebApiHelper().GetEntity <List <RetDeviceCurrentData> >(wparameter)); //报错的地方 }
/// <summary> /// 获取当前组织设备列表 /// </summary> /// <returns></returns> public ReturnItem <List <RetDeviceInfo> > GetDeviceList(GetDeviceInfoParameter parameter) { string tokenId = ""; var getdic = JsonHelper.JsonToEntity <Hashtable>(HttpContext.Current.Request.Headers["tokenid"].ToBase64DecryptString()); tokenId = getdic["tokenid"].ToString(); parameter.TokenId = tokenId; WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.DeviceApiUrl + "Api/EquipmentInfo/GetDeviceListInside" }; parameter.SetPostParameter(wparameter);//填充请求参数 if (!string.IsNullOrEmpty(parameter.Status)) { wparameter.Content.Add("Status", parameter.Status); } return(new WebApiHelper().GetEntity <List <RetDeviceInfo> >(wparameter)); }
//是否加密传输 /// <summary> /// 获取TokenId详细信息(用于加密) /// </summary> /// <param name="TokenId"></param> /// <returns></returns> public ReturnItem <TokenEntity> GetTokenEntity() { string tokenId = ""; try { var getdic = JsonHelper.JsonToEntity <Hashtable>(HttpContext.Current.Request.Headers["tokenid"].ToBase64DecryptString()); tokenId = getdic["tokenid"].ToString(); if (tokenId == "") { return(null); } } catch { return(null); } Guid token = Guid.Empty; Guid.TryParse(tokenId, out token); if (CustomConfigParam.IsUseRedis) { RetUserLoginInfo getbyRedis = new RedisClient(CustomConfigParam.RedisDbNumber).StringGet <RetUserLoginInfo>("Token:" + tokenId.Replace("-", "").ToLower()); if (getbyRedis != null) { getbyRedis.TokenId = token.ToString("N"); //判断是否过期 if (getbyRedis.TokenDisabledTime.AddHours(2) < DateTime.Now) { return(new ReturnItem <TokenEntity>() { Code = 0, Msg = "登录信息已过期", Data = null }); } getbyRedis.TokenDisabledTime = DateTime.Now.AddHours(2); //刷新Redis中的时间 new RedisClient(CustomConfigParam.RedisDbNumber).StringSet <RetUserLoginInfo>("Token:" + tokenId.Replace("-", "").ToLower(), getbyRedis); return(new ReturnItem <TokenEntity>() { Code = 0, Msg = "获取用户资料成功", Data = new TokenEntity() { IV = getbyRedis.Iv, Key = getbyRedis.Key, UserId = getbyRedis.UserId, TokenId = Guid.Parse(getbyRedis.TokenId), IsPlatformAdmin = getbyRedis.IsPlatformAdmin, DisableDate = getbyRedis.TokenDisabledTime } }); } } if (token != Guid.Empty) { GetTokenEntityParameter parameter = new GetTokenEntityParameter() { TokenId = token }; WebApiPostParameter wparameter = new WebApiPostParameter() { Url = CustomConfigParam.UserApiUrl + "Api/User/GetTokenEntity" }; parameter.SetPostParameter(wparameter);//填充请求参数 return(new WebApiHelper().GetEntity <TokenEntity>(wparameter)); } else { return(null); //throw new Exception("不合法的TokenId"); } }