using Ets.GroupCallCenter.Model; using Ets.GroupCallCenter.Model.Controllers.Groupon; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace Ets.GroupCallCenter.Groupon.Services { public class Api { /// <summary> /// Post方式调用API. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="objParam">参数集合.</param> /// <param name="apiUrl">API地址.</param> /// <param name="type">返回数据类型.</param> /// <returns></returns> /// 创建者:王宇 /// 创建日期:1/21/2015 3:41 PM /// 修改者: /// 修改时间: /// ------------------------------------ public static object InvokingApiPost<T>(object objParam, string apiUrl, ResultModeType type) { string url = ConfigurationManager.AppSettings["InvokingApiUrl"] + apiUrl; Type t = objParam.GetType(); string param = JsonHelper.GetJson<object>(objParam); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); byte[] bs = System.Text.Encoding.UTF8.GetBytes(param); request.Method = "POST"; request.ContentType = "application/json"; request.ContentLength = bs.Length; ApiServiceResult<T> resultResult = new ApiServiceResult<T>(); using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(bs, 0, bs.Length); } try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8")); string res = sr.ReadToEnd(); sr.Close(); response.Close(); JObject json = JObject.Parse(res); resultResult.Code = json["MessageCode"] == null ? "" : json["MessageCode"].ToString(); resultResult.Message = json["Message"] == null ? "" : json["Message"].ToString(); string result = json["Result"] == null ? "" : json["Result"].ToString(); if (type == ResultModeType.Single) { if (!string.IsNullOrEmpty(result)) resultResult.Result = JsonHelper.FromJson<T>(result); } else { if (!string.IsNullOrEmpty(result)) resultResult.ResultList = JsonHelper.JsonStringToList<T>(json["Result"] == null ? "" : json["Result"].ToString()); } return resultResult; } catch (WebException ex) { resultResult.Code = "-1"; resultResult.Message = ex.Message; return resultResult; } catch (Exception ex) { resultResult.Code = "-1"; resultResult.Message = ex.Message; return resultResult; } } /// <summary> /// Get方式调用API. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="url">URL地址.</param> /// <param name="type">返回数据类型.</param> /// <returns></returns> /// 创建者:王宇 /// 创建日期:1/21/2015 3:41 PM /// 修改者: /// 修改时间: /// ------------------------------------ public static object InvokingApiGet<T>(string url, ResultModeType type) { url = ConfigurationManager.AppSettings["InvokingApiUrl"] + url; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Timeout = 1000 * 60 * 15; request.Method = "GET"; HttpWebResponse response = null; string returnValue = string.Empty; ApiServiceResult<T> resultResult = new ApiServiceResult<T>(); try { response = (HttpWebResponse)request.GetResponse(); System.IO.StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8")); returnValue = sr.ReadToEnd(); sr.Close(); response.Close(); JObject json = JObject.Parse(returnValue); resultResult.Code = json["MessageCode"] == null ? "" : json["MessageCode"].ToString(); resultResult.Message = json["Message"] == null ? "" : json["Message"].ToString(); string strs = json["Result"] == null ? "" : json["Result"].ToString(); if (type == ResultModeType.Single) { if (!string.IsNullOrEmpty(strs)) resultResult.Result = JsonHelper.FromJson<T>(strs); } else { if (!string.IsNullOrEmpty(strs)) resultResult.ResultList = JsonHelper.JsonStringToList<T>(strs); } return resultResult; } catch (System.Net.WebException ex) { resultResult.Code = "-1"; resultResult.Message = ex.Message; return resultResult; } catch (Exception ex) { resultResult.Code = "-1"; resultResult.Message = ex.Message; return resultResult; } } } /// <summary> /// 返回实体类型,集合或者非集合 /// </summary> /// 创建者:王宇 /// 创建日期:1/21/2015 3:38 PM /// 修改者: /// 修改时间: /// ------------------------------------ public enum ResultModeType { /// <summary> /// 单个实体模式 /// </summary> Single, /// <summary> /// 列表模式 /// </summary> List } } |
|