/// <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); WeixinTrace.SendApiLog(url, returnText); #if NET35 || NET40 || NET45 JavaScriptSerializer js = new JavaScriptSerializer(); if (maxJsonLength.HasValue) { js.MaxJsonLength = maxJsonLength.Value; } #endif if (returnText.Contains("errcode")) { //可能发生错误 #if NET35 || NET40 || NET45 WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText); #else WxJsonResult errorResult = Newtonsoft.Json.JsonConvert.DeserializeObject <WxJsonResult>(returnText); #endif if (errorResult.errcode != ReturnCode.请求成功) { //发生错误 throw new ErrorJsonResultException( string.Format("微信请求发生错误!错误代码:{0},说明:{1}", (int)errorResult.errcode, errorResult.errmsg), null, errorResult, url); } } #if NET35 || NET40 || NET45 T result = js.Deserialize <T>(returnText); #else T result = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(returnText); #endif return(result); }
/// <summary> /// 异步GetJsonA /// </summary> /// <param name="url"></param> /// <param name="encoding"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> /// <exception cref="ErrorJsonResultException"></exception> public static async Task <T> GetJsonAsync <T>(string url, Encoding encoding = null) { string returnText = await RequestUtility.HttpGetAsync(url, encoding); JavaScriptSerializer js = new JavaScriptSerializer(); if (returnText.Contains("errcode")) { //可能发生错误 WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText); if (errorResult.errcode != ReturnCode.请求成功) { //发生错误 throw new ErrorJsonResultException( string.Format("微信请求发生错误!错误代码:{0},说明:{1}", (int)errorResult.errcode, errorResult.errmsg), null, errorResult, url); } } T result = js.Deserialize <T>(returnText); return(result); }