/// <summary> /// 获取Post结果 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="returnText"></param> /// <returns></returns> public static T GetResult <T>(string returnText) { JavaScriptSerializer js = new JavaScriptSerializer(); //if (returnText.Contains("errcode")) //当错误代码不为0时,发生错误 if (System.Text.RegularExpressions.Regex.IsMatch(returnText, @"(?isx)[\x22\x27]code[\x22\x27][\s\r\n]*\:[\s\r\n]*[1-9]+")) { //可能发生错误 WishJsonResult errorResult = js.Deserialize <WishJsonResult>(returnText); if (errorResult.code != (int)ReturnCode.Success) { //发生错误 throw new ErrorJsonResultException( string.Format("Post请求发生错误!错误代码:{0},说明:{1}", (int)errorResult.code, errorResult.message), null, errorResult); } } T result = js.Deserialize <T>(returnText); //TODO:加入特殊情况下的回调处理 return(result); }
/// <summary> /// GET方式请求URL,并返回T类型 /// </summary> /// <typeparam name="T">接收JSON的数据类型</typeparam> /// <param name="url"></param> /// <param name="encoding"></param> /// <param name="maxJsonLength">允许最大JSON长度</param> /// <returns></returns> public static T GetJson <T>(string url, Encoding encoding = null, int?maxJsonLength = null) { string returnText = RequestUtility.HttpGet(url, encoding); WishTrace.SendApiLog(url, returnText); JavaScriptSerializer js = new JavaScriptSerializer(); if (maxJsonLength.HasValue) { js.MaxJsonLength = maxJsonLength.Value; } //if (returnText.Contains("errcode")) //当错误代码不为0时,发生错误 if (System.Text.RegularExpressions.Regex.IsMatch(returnText, @"(?isx)[\x22\x27]code[\x22\x27][\s\r\n]*\:[\s\r\n]*[1-9]+")) { //可能发生错误 WishJsonResult errorResult = js.Deserialize <WishJsonResult>(returnText); if (errorResult.code != (int)ReturnCode.Success) { //发生错误 throw new ErrorJsonResultException( string.Format("请求发生错误!错误代码:{0},说明:{1}", (int)errorResult.code, errorResult.message), null, errorResult, url); } } T result = js.Deserialize <T>(returnText); return(result); }
/// <summary> /// ErrorJsonResultException /// </summary> /// <param name="message">异常消息</param> /// <param name="inner">内部异常</param> /// <param name="jsonResult">WxJsonResult</param> /// <param name="url">API地址</param> public ErrorJsonResultException(string message, Exception inner, WishJsonResult jsonResult, string url = null) : base(message, inner, true) { JsonResult = jsonResult; Url = url; WishTrace.ErrorJsonResultExceptionLog(this); }
/// <summary> /// 发送数据 /// </summary> /// <param name="accessToken"></param> /// <param name="urlFormat"></param> /// <param name="data"></param> /// <param name="sendType"></param> /// <param name="timeOut"></param> /// <param name="checkValidationResult"></param> /// <param name="jsonSetting"></param> /// <returns></returns> public static WishJsonResult Send(string accessToken, string urlFormat, object data, CommonJsonSendType sendType = CommonJsonSendType.POST, int timeOut = Config.TIME_OUT, bool checkValidationResult = false, JsonSetting jsonSetting = null) { WishJsonResult result = null; try { result = Wl.Wish.CommonAPIs.CommonJsonSend.Send(accessToken, urlFormat, data, sendType, timeOut, checkValidationResult, jsonSetting); } catch (Exception) { throw; } return(result); }