public async Task <IHttpActionResult> Search(string address) { using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("nl-NL")); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml")); string requestUri = QueryStringBuilder(address); //if (requestUri == null) { expHandler = new ZillowExceptionHandler(400,"Bad Request"); } HttpResponseMessage response = await client.GetAsync(requestUri); if (response.IsSuccessStatusCode) { string apiResult = response.Content.ReadAsStringAsync().Result; ZException exObj = ProcessException(apiResult); if (exObj.StatusCode > 0) { expHandler = new ZillowExceptionHandler(exObj.StatusCode, exObj.ErrorDescription); return(expHandler); } ; IEnumerable <Zproperty> apiModel = GetSerchResultsFromXml(apiResult); return(Ok(apiModel)); } expHandler = new ZillowExceptionHandler(404, "Resource Not Found"); return(expHandler); } }
/// <summary> /// Process exception node from xml /// </summary> /// <param name="xmlString"></param> /// <returns></returns> public ZException ProcessException(string xmlString) { XDocument doc = XDocument.Parse(xmlString); ZException _exObj = new ZException() { StatusCode = (int)doc.Root.Element("message").Element("code"), ErrorDescription = (string)doc.Root.Element("message").Element("text") }; return(_exObj); }
/// <summary> /// 获取指定Key的所有数据 /// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="keys"></param> /// <returns></returns> public List <T> GetAll <T>(List <string> keys) { try { using (IRedisClient client = GetReadClient()) { return(client.GetValues <T>(keys)); } } catch (Exception ex) { LogHelper.Error("key:" + string.Join(",", keys) + " | 错误信息:" + ZException.GetExceptionMessage(ex)); return(null); } }
/// <summary> /// 获取缓存数据 /// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="key"></param> /// <returns></returns> public T Get <T>(string key) { try { using (IRedisClient client = GetReadClient()) { return(client.Get <T>(key)); } } catch (Exception ex) { LogHelper.Error("key:" + key + " | 错误信息:" + ZException.GetExceptionMessage(ex)); return(default(T)); } }
/// <summary> /// 获取缓存数据 /// </summary> /// <param name="key"></param> /// <returns></returns> public object Get(string key) { try { using (IRedisClient client = GetReadClient()) { return(client.Get <object>(key)); } } catch (Exception ex) { LogHelper.Error("key:" + key + " | 错误信息:" + ZException.GetExceptionMessage(ex)); return(null); } }
/// <summary> /// 按前缀模糊查询获取数据 /// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="cacheKeyPrefix">缓存Key前缀</param> /// <returns></returns> public List <T> GetAll <T>(string cacheKeyPrefix) { try { using (IRedisClient client = GetReadClient()) { var keys = client.SearchKeys("*" + cacheKeyPrefix + "*"); return(client.GetValues <T>(keys)); } } catch (Exception ex) { LogHelper.Error("key:" + cacheKeyPrefix + " | 错误信息:" + ZException.GetExceptionMessage(ex)); return(null); } }
/// <summary> /// Raises the <see cref="ServerBase.SendClientDataException"/> event. /// </summary> /// <param name="clientID">ID of client to send to <see cref="ServerBase.SendClientDataException"/> event.</param> /// <param name="ex">Exception to send to <see cref="ServerBase.SendClientDataException"/> event.</param> protected override void OnSendClientDataException(Guid clientID, Exception ex) { if (IsThreadAbortException(ex)) { return; } if (m_clientInfoLookup.ContainsKey(clientID) && CurrentState == ServerState.Running) { ZException zmqex = ex as ZException; if ((object)zmqex != null && (zmqex.Error.Number == ZError.EAGAIN.Number || zmqex.Error.Number == ZError.ETERM.Number)) { ThreadPool.QueueUserWorkItem(state => DisconnectOne(clientID)); } else { base.OnSendClientDataException(clientID, ex); } } }
/// <summary> /// Raises the <see cref="ClientBase.SendDataException"/> event. /// </summary> /// <param name="ex">Exception to send to <see cref="ClientBase.SendDataException"/> event.</param> protected override void OnSendDataException(Exception ex) { if (ZeroMQServer.IsThreadAbortException(ex)) { return; } if (CurrentState != ClientState.Disconnected) { ZException zmqex = ex as ZException; if ((object)zmqex != null && (zmqex.ErrNo == ZError.EAGAIN || zmqex.ErrNo == ZError.ETERM)) { ThreadPool.QueueUserWorkItem(state => Disconnect()); } else { base.OnSendDataException(ex); } } }
/// <summary> /// 获取缓存数据 /// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="key"></param> /// <param name="objectDeserialize">True:获取数据为Byte,转换为T指定类型后返回,False:直接获取缓存数据</param> /// <returns></returns> public T Get <T>(string key, bool objectDeserialize) { try { using (IRedisClient client = GetReadClient()) { if (objectDeserialize) { var objSer = new ObjectSerializer(); return((T)objSer.Deserialize(client.Get <byte[]>(key))); } else { return(client.Get <T>(key)); } } } catch (Exception ex) { LogHelper.Error("key:" + key + " | 错误信息:" + ZException.GetExceptionMessage(ex)); return(default(T)); } }