/// <summary> /// GET 字符串数据获取(同步),同时获取状态码,按状态码识别是否成功。 /// </summary> /// <param name="url">地址</param> /// <param name="statusCode">状态码</param> /// <param name="parms">参数对列表</param> /// <returns></returns> public static String GetStringWithInfo(String app, String url, out CustomException ce, List <KeyValuePair <String, String> > parmList = null) { String result = String.Empty; String urlcomp = GetUrl(app, url); if (parmList != null && parmList.Count > 0) { urlcomp = AppendUrlWithParameter(urlcomp, parmList); } try { SetHeader(); HttpResponseMessage response = _HttpClient.GetAsync(urlcomp).Result; String statusCode = response.StatusCode.ToString(); result = response.Content.ReadAsStringAsync().Result; if (response.IsSuccessStatusCode) { GetToken(response); ce = null; } else if (statusCode.Equals("Conflict")) //业务错误 { CustomExceptionInfo info = JsonConvert.DeserializeObject <CustomExceptionInfo>(result); ce = new CustomException(info); } else if (statusCode.Equals("PreconditionFailed")) //jwt过期 { if (DoRelogin()) { return(GetStringWithInfo(app, url, out ce, parmList)); //产生新的jwt,方法重新执行 } else { ce = new CustomException(statusCode, "at " + urlcomp, ""); } } else //其它错误 { ce = new CustomException(statusCode, "at " + urlcomp, ""); } } catch (Exception e) { ce = new CustomException("服务异常", e.Message + " [" + urlcomp + "]", e.StackTrace); RemoveHeader(); return(String.Empty); } RemoveHeader(); return(result); }
/// <summary> /// POST方法(解压缩方法),json传入RequestBody /// </summary> /// <param name="url"></param> /// <param name="json"></param> /// <returns></returns> public static String HttpPostGZipWithInfo(String app, String url, out CustomException ce, String json) { String result = String.Empty; var content = new StringContent(json); var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip }; String urlcomp = GetUrl(app, url); //创建HttpClient(注意传入HttpClientHandler) using (var http = new HttpClient(handler)) { SetHeader(); var response = http.PostAsync(urlcomp, content).Result; //await异步等待回应 //await异步读取最后的JSON(注意此时gzip已经被自动解压缩了,因为上面的AutomaticDecompression = DecompressionMethods.GZip) String statusCode = response.StatusCode.ToString(); result = response.Content.ReadAsStringAsync().Result;//result就是返回的结果。 if (response.IsSuccessStatusCode) { GetToken(response); ce = null; } else if (statusCode.Equals("Conflict")) //业务错误 { CustomExceptionInfo info = JsonConvert.DeserializeObject <CustomExceptionInfo>(result); ce = new CustomException(info); } else if (statusCode.Equals("PreconditionFailed")) //jwt过期 { if (DoRelogin()) { return(HttpPostGZipWithInfo(app, url, out ce, json)); //产生新的jwt,方法重新执行 } else { ce = new CustomException(statusCode, "at " + urlcomp, ""); } } else //其它错误 { ce = new CustomException(statusCode, "at " + urlcomp, ""); } RemoveHeader(); } return(result); }
/// <summary> /// POST方法,json传入RequestBody /// </summary> /// <param name="url"></param> /// <param name="json"></param> /// <returns></returns> public static String HttpPostWithInfo(String app, String url, out CustomException ce, String json) { String result = String.Empty; String urlcomp = GetUrl(app, url); var content = new StringContent(json, Encoding.UTF8, "application/json"); //Content-Type设置 try { SetHeader(); HttpResponseMessage response = _HttpClient.PostAsync(urlcomp, content).Result; String statusCode = response.StatusCode.ToString(); result = response.Content.ReadAsStringAsync().Result; if (response.IsSuccessStatusCode) { GetToken(response); ce = null; } else if (statusCode.Equals("Conflict")) //业务错误 { CustomExceptionInfo info = JsonConvert.DeserializeObject <CustomExceptionInfo>(result); ce = new CustomException(info); } else if (statusCode.Equals("PreconditionFailed")) //jwt过期 { if (DoRelogin()) { return(HttpPostWithInfo(app, url, out ce, json)); //产生新的jwt,方法重新执行 } else { ce = new CustomException(statusCode, "at " + urlcomp, ""); } } else //其它错误 { ce = new CustomException(statusCode, "at " + urlcomp, ""); } } catch (Exception e) { ce = new CustomException("服务异常", e.Message + " [" + urlcomp + "]", e.StackTrace); RemoveHeader(); return(String.Empty); } RemoveHeader(); return(result); }
public CustomException(CustomExceptionInfo ei) { this.Info = ei.Info; this.InnerMessage = ei.InnerMessage; this.Stacktrace = ei.Stacktrace; }