BaseController.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Configuration;
  5. using System.Diagnostics;
  6. using System.Linq;
  7. using System.Net.Http;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Web;
  11. using System.Web.Http;
  12. namespace XdCxRhDW.App.WebAPI
  13. {
  14. /// <summary>
  15. ///
  16. /// </summary>
  17. [RoutePrefix("")]
  18. public class BaseController : ApiController
  19. {
  20. /// <summary>
  21. ///
  22. /// </summary>
  23. /// <param name="url"></param>
  24. /// <param name="data"></param>
  25. /// <returns></returns>
  26. public static string PostRequest(string url, HttpContent data)
  27. {
  28. try
  29. {
  30. var handler = new HttpClientHandler() { UseCookies = false };
  31. HttpClient client = new HttpClient(handler);
  32. client.Timeout = TimeSpan.FromSeconds(10);
  33. var message = new HttpRequestMessage(HttpMethod.Post, url);
  34. message.Content = data;
  35. var response = client.SendAsync(message).Result;
  36. response.EnsureSuccessStatusCode();
  37. var result = response.Content.ReadAsStringAsync().Result;
  38. return result;
  39. }
  40. catch (Exception ex)
  41. {
  42. throw ex;
  43. }
  44. }
  45. /// <summary>
  46. ///
  47. /// </summary>
  48. /// <typeparam name="T"></typeparam>
  49. /// <param name="url"></param>
  50. /// <param name="data"></param>
  51. /// <returns></returns>
  52. public static T PostRequest<T>(string url, HttpContent data)
  53. {
  54. try
  55. {
  56. var handler = new HttpClientHandler() { UseCookies = false };
  57. HttpClient client = new HttpClient(handler);
  58. client.Timeout = TimeSpan.FromSeconds(10);
  59. var message = new HttpRequestMessage(HttpMethod.Post, url);
  60. message.Content = data;
  61. var response = client.SendAsync(message).Result;
  62. response.EnsureSuccessStatusCode();
  63. var result = response.Content.ReadAsStringAsync().Result;
  64. var AjaxResult = JsonConvert.DeserializeObject<AjaxResult>(result);
  65. if (AjaxResult.code == 200)
  66. {
  67. if (AjaxResult.data.GetType().ToString().Contains("System.String"))
  68. {
  69. return (T)AjaxResult.data;
  70. }
  71. var pres = JsonConvert.DeserializeObject<T>(AjaxResult.data.ToString());
  72. return pres;
  73. }
  74. else
  75. {
  76. throw new Exception(AjaxResult.msg);
  77. }
  78. }
  79. catch (Exception ex)
  80. {
  81. throw ex;
  82. }
  83. }
  84. /// <summary>
  85. /// Http返回结果
  86. /// </summary>
  87. public class AjaxResult<T>
  88. {
  89. /// <summary>
  90. /// 返回数据
  91. /// </summary>
  92. public T data { get; set; }
  93. /// <summary>
  94. /// 返回消息
  95. /// </summary>
  96. public string msg { get; set; } = "ok";
  97. /// <summary>
  98. /// 状态码.成功=200,失败=0
  99. /// </summary>
  100. public int code { get; set; } = 200;
  101. }
  102. /// <summary>
  103. /// Http返回结果
  104. /// </summary>
  105. public class AjaxResult
  106. {
  107. /// <summary>
  108. /// 返回数据
  109. /// </summary>
  110. public object data { get; set; }
  111. /// <summary>
  112. /// 返回消息
  113. /// </summary>
  114. public string msg { get; set; } = "ok";
  115. /// <summary>
  116. /// 0正确 -1错误
  117. /// </summary>
  118. public int code { get; set; } = 200;
  119. }
  120. /// <summary>
  121. /// 返回成功
  122. /// </summary>
  123. /// <param name="data">返回的数据</param>
  124. /// <returns></returns>
  125. protected AjaxResult Success(object data = null)
  126. {
  127. AjaxResult res = new AjaxResult
  128. {
  129. code = 200,
  130. msg = "请求成功!",
  131. data = data
  132. };
  133. return res;
  134. }
  135. /// <summary>
  136. /// 返回成功
  137. /// </summary>
  138. /// <param name="msg">返回的消息</param>
  139. /// <param name="data">返回的数据</param>
  140. /// <returns></returns>
  141. protected AjaxResult Success(object data, string msg = "请求成功!")
  142. {
  143. AjaxResult res = new AjaxResult
  144. {
  145. code = 200,
  146. msg = msg,
  147. data = data
  148. };
  149. return res;
  150. }
  151. /// <summary>
  152. /// 返回成功
  153. /// </summary>
  154. /// <param name="msg">返回的消息</param>
  155. /// <param name="data">返回的数据</param>
  156. /// <returns></returns>
  157. protected AjaxResult<T> Success<T>(T data, string msg = "请求成功!")
  158. {
  159. AjaxResult<T> res = new AjaxResult<T>
  160. {
  161. code = 200,
  162. msg = msg,
  163. data = data
  164. };
  165. return res;
  166. }
  167. /// <summary>
  168. /// 返回错误
  169. /// </summary>
  170. /// <param name="msg">错误提示</param>
  171. /// <returns></returns>
  172. protected AjaxResult Error(string msg)
  173. {
  174. AjaxResult res = new AjaxResult
  175. {
  176. code = 0,
  177. msg = msg,
  178. data = null
  179. };
  180. return res;
  181. }
  182. /// <summary>
  183. /// 返回错误
  184. /// </summary>
  185. /// <param name="msg">错误提示</param>
  186. /// <returns></returns>
  187. protected AjaxResult<T> Error<T>(string msg)
  188. {
  189. AjaxResult<T> res = new AjaxResult<T>
  190. {
  191. code = 0,
  192. msg = msg,
  193. data = default
  194. };
  195. return res;
  196. }
  197. #region WebAPI 获取传统Context
  198. /// <summary>
  199. /// Context
  200. /// </summary>
  201. public HttpContextBase Context
  202. {
  203. get
  204. {
  205. return (HttpContextBase)Request.Properties["MS_HttpContext"];
  206. }
  207. }
  208. /// <summary>
  209. /// Request
  210. /// </summary>
  211. public HttpRequestBase HttpRequest
  212. {
  213. get
  214. {
  215. return Context.Request;
  216. }
  217. }
  218. /// <summary>
  219. /// Response
  220. /// </summary>
  221. public HttpResponseBase HttpResponse
  222. {
  223. get
  224. {
  225. return Context.Response;
  226. }
  227. }
  228. #endregion
  229. }
  230. }