ApiHelper.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using DefaultEdit.Log4xml;
  2. using EasyHttp.Http;
  3. using Newtonsoft.Json;
  4. using NextTreatMesDemo.Models;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. namespace NextTreatMesDemo.Utils
  11. {
  12. public class ApiHelper : HttpClient
  13. {
  14. public ApiHelper()
  15. {
  16. this.Request.Accept = HttpContentTypes.ApplicationJson;
  17. this.Request.ContentType = "application/json";
  18. }
  19. public XnRestfulResult<T> ApiGet<T>(string uri, object query = null)
  20. {
  21. try
  22. {
  23. var response = ConvertResult<T>(Get(uri, query));
  24. //日志记录
  25. System.Diagnostics.Debug.WriteLine("ReqMethod:Get,URL:" + uri + $",\r\n Code:{(int)response.Code} Request:" + response.RawText);
  26. LogHelper.MesInfo("ReqMethod:Get,URL:" + uri + $",\r\n Code:{(int)response.Code} Request:" + response.RawText);
  27. return response;
  28. }
  29. catch (Exception ex)
  30. {
  31. LogHelper.MesInfo($"GET异常,原因{ex.Message}");
  32. return new XnRestfulResult<T>()
  33. {
  34. Data = default(T),
  35. RawText = null,
  36. Success = false,
  37. Message = $"GET异常,原因{ex.Message}"
  38. };
  39. }
  40. }
  41. public XnRestfulResult<T> ApiDelete<T>(string uri, object query = null)
  42. {
  43. try
  44. {
  45. var response = ConvertResult<T>(Delete(uri, query));
  46. //日志记录
  47. System.Diagnostics.Debug.WriteLine("ReqMethod:Delete,URL:" + uri + $",\r\n Code:{(int)response.Code} Request:" + response.RawText);
  48. //LogHelper.Write_Info("ReqMethod:Delete,URL:" + uri + $",\r\n Code:{(int)response.Code} Request:" + response.RawText);
  49. return response;
  50. }
  51. catch (Exception ex)
  52. {
  53. LogHelper.MesInfo($"Delete异常,原因{ex.Message}");
  54. return new XnRestfulResult<T>()
  55. {
  56. Data = default(T),
  57. RawText = null,
  58. Success = false,
  59. Message = $"Delete异常,原因{ex.Message}"
  60. };
  61. }
  62. }
  63. public XnRestfulResult<T> ApiPost<T>(string uri, object data, string contentType, object query = null)
  64. {
  65. try
  66. {
  67. string json = JsonConvert.SerializeObject(data);
  68. var response = ConvertResult<T>(Post(uri, json, contentType));
  69. //日志记录
  70. System.Diagnostics.Debug.WriteLine("ReqMethod: Post, URL: " + uri + $",\r\n Code:{(int)response.Code} Request:" + JsonConvert.SerializeObject(data) + "\r\n Response:" + response.RawText);
  71. LogHelper.MesInfo("ReqMethod: Post, URL: " + uri + $",\r\n Code:{(int)response.Code} Request:" + JsonConvert.SerializeObject(data) + "\r\n Response:" + response.RawText);
  72. return response;
  73. }
  74. catch (Exception ex)
  75. {
  76. LogHelper.MesInfo($"Post异常,原因{ex.Message}");
  77. return new XnRestfulResult<T>()
  78. {
  79. Data = default(T),
  80. RawText = null,
  81. Success = false,
  82. Message = $"Post异常,原因{ex.Message}"
  83. };
  84. }
  85. }
  86. public XnRestfulResult<T> ApiPut<T>(string uri, object data, string contentType, object query = null)
  87. {
  88. try
  89. {
  90. string json = JsonConvert.SerializeObject(data);
  91. var response = ConvertResult<T>(Put(uri, json, contentType));
  92. //日志记录
  93. Console.WriteLine("ReqMethod: Put, URL: " + uri + $",\r\n Code:{(int)response.Code} Request:" + JsonConvert.SerializeObject(data) + "\r\n Response:" + response.RawText);
  94. LogHelper.MesInfo("ReqMethod: Put, URL: " + uri + $",\r\n Code:{(int)response.Code} Request:" + JsonConvert.SerializeObject(data) + "\r\n Response:" + response.RawText);
  95. return response;
  96. }
  97. catch (Exception ex)
  98. {
  99. LogHelper.MesInfo($"PUT异常,原因{ex.Message}");
  100. return new XnRestfulResult<T>()
  101. {
  102. Data = default(T),
  103. RawText = null,
  104. Success = false,
  105. Message = $"PUT异常,原因{ex.Message}"
  106. };
  107. }
  108. }
  109. private XnRestfulResult<T> ConvertResult<T>(HttpResponse httpResponse)
  110. {
  111. try
  112. {
  113. XnRestfulResult<T> xnRestfulResult = new XnRestfulResult<T>()
  114. {
  115. Code = httpResponse.StatusCode,
  116. RawText = httpResponse.RawText,
  117. Success = false,
  118. Timestamp = httpResponse.Date.Millisecond
  119. };
  120. //httpcoded
  121. //2开头 (请求成功)表示成功处理了请求的状态代码。
  122. //3开头 (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
  123. //4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
  124. //5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
  125. if ((int)httpResponse.StatusCode < 300)
  126. {
  127. xnRestfulResult.Success = true;
  128. if (!string.IsNullOrEmpty(httpResponse.RawText))
  129. {
  130. xnRestfulResult.Data = JsonConvert.DeserializeObject<T>(httpResponse.RawText);
  131. //xnRestfulResult.Message = JsonConvert.DeserializeObject<XnRestfulResult<object>>(httpResponse.RawText).Message;
  132. }
  133. }
  134. return xnRestfulResult;
  135. }
  136. catch (Exception ex)
  137. {
  138. return new XnRestfulResult<T>()
  139. {
  140. Code = httpResponse.StatusCode,
  141. Data = default(T),
  142. RawText = $"api调用异常,原因{ex.Message}",
  143. Success = false,
  144. Message = $"api调用异常,原因{ex.Message}"
  145. };
  146. }
  147. }
  148. }
  149. }