WebApiHelper.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Net;
  7. using System.Runtime.Serialization.Json;
  8. using System.Text;
  9. using System.Web;
  10. namespace WCS_Client.Frm.MBtn_Sys
  11. {
  12. public enum RequestMethod
  13. {
  14. Get = 1,//获取
  15. Post = 2,//投寄
  16. OPTIONS = 3,//选项
  17. HEAD = 4,//头
  18. PUT = 5,//放置
  19. DELETE = 6,//删除
  20. TRACE = 7,//跟踪
  21. CONNECT = 8,//连接
  22. }
  23. public class WebApiHelper
  24. {
  25. //internal static string MesBlankDownAddress = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["MesBlankDown"]);
  26. //application/x-www-form-urlencoded//application/json
  27. /// <summary>
  28. /// webapi地址调用函数
  29. /// </summary>
  30. /// <param name="url">地址</param>
  31. /// <param name="user_Id">验证用户</param>
  32. /// <param name="reqMethod">请求方式</param>
  33. /// <param name="param">参数(json)</param>
  34. /// <returns></returns>
  35. internal static JObject SendInfoToWebAPI(string url, string user_Id = null, string reqMethod = "Get", JArray param = null)
  36. {
  37. //JArray jsonobj =new JArray();
  38. JObject jobj = null;
  39. HttpWebRequest webRequest = null;
  40. HttpWebResponse webResponse = null;
  41. try
  42. {
  43. webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
  44. //webRequest.ContentType = "application/x-www-form-urlencoded";
  45. webRequest.ContentType = "application/json";
  46. //webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) ";
  47. webRequest.Method = reqMethod;
  48. webRequest.AllowAutoRedirect = false;
  49. webRequest.Timeout = 50000;
  50. byte[] PostData = null;
  51. if (user_Id != null)
  52. webRequest.Headers.Add("Authorization", user_Id);
  53. //webRequest.Headers.Add("Authorization", "A1203016");
  54. if (param != null)
  55. {
  56. //string paraUrlCoded = System.Web.HttpUtility.UrlEncode("paramaters");
  57. //paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(jsonParas);
  58. PostData = Encoding.UTF8.GetBytes(param[0].ToString());
  59. webRequest.ContentLength = PostData.Length;
  60. }
  61. if (reqMethod == RequestMethod.Post.ToString())
  62. {
  63. Stream RequestStream = webRequest.GetRequestStream();
  64. if (PostData != null)
  65. {
  66. RequestStream.Write(PostData, 0, PostData.Length);
  67. }
  68. RequestStream.Close();
  69. RequestStream.Dispose();
  70. }
  71. webResponse = (HttpWebResponse)webRequest.GetResponse();
  72. Stream ResponseStrem = webResponse.GetResponseStream();
  73. StreamReader reader = new StreamReader(ResponseStrem);
  74. string ValueString = reader.ReadToEnd();
  75. jobj = JObject.Parse(ValueString);
  76. //jsonobj = JArray.Parse(ValueString);
  77. ResponseStrem.Dispose();
  78. webResponse.Close();
  79. }
  80. catch (WebException webex)
  81. {
  82. //webResponse = (HttpWebResponse)webex.Response;
  83. //StreamReader sr = new StreamReader(webResponse.GetResponseStream());
  84. //string temp = sr.ReadToEnd();
  85. string messge = string.Format("通信接口错误,Url={0}", url);
  86. }
  87. catch (Exception ex)
  88. {
  89. string messge = string.Format("通信接口错误,Url={0}", url);
  90. }
  91. finally
  92. {
  93. if (webResponse != null)
  94. {
  95. webResponse.Close();
  96. webResponse = null;
  97. }
  98. if (webRequest != null)
  99. {
  100. webRequest.Abort();
  101. webRequest = null;
  102. }
  103. }
  104. return jobj;
  105. }
  106. internal static JObject SendAsyncInfoToWebAPI(string url, string user_Id = null, string reqMethod = "Get", JArray param = null)
  107. {
  108. //JArray jsonobj =new JArray();
  109. JObject jobj = null;
  110. HttpWebRequest webRequest = null;
  111. HttpWebResponse webResponse = null;
  112. try
  113. {
  114. webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
  115. webRequest.ContentType = "application/x-www-form-urlencoded";
  116. webRequest.Method = reqMethod;
  117. webRequest.AllowAutoRedirect = false;
  118. webRequest.Timeout = 5000;
  119. byte[] PostData = null;
  120. if (user_Id != null)
  121. webRequest.Headers.Add("Authorization", user_Id);
  122. //webRequest.Headers.Add("Authorization", "A1203016");
  123. if (param != null)
  124. {
  125. //string paraUrlCoded = System.Web.HttpUtility.UrlEncode("paramaters");
  126. //paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(jsonParas);
  127. PostData = Encoding.UTF8.GetBytes(param[0].ToString());
  128. webRequest.ContentLength = PostData.Length;
  129. }
  130. if (reqMethod == RequestMethod.Post.ToString())
  131. {
  132. Stream RequestStream = webRequest.GetRequestStream();
  133. if (PostData != null)
  134. {
  135. RequestStream.Write(PostData, 0, PostData.Length);
  136. }
  137. RequestStream.Close();
  138. RequestStream.Dispose();
  139. }
  140. //webResponse = (HttpWebResponse)webRequest.GetResponse();
  141. webRequest.BeginGetResponse(AsyncCallbackResponse, webRequest);
  142. //Stream ResponseStrem = webResponse.GetResponseStream();
  143. //StreamReader reader = new StreamReader(ResponseStrem);
  144. //string ValueString = reader.ReadToEnd();
  145. //jobj = JObject.Parse(ValueString);
  146. //jsonobj = JArray.Parse(ValueString);
  147. //ResponseStrem.Dispose();
  148. webResponse.Close();
  149. }
  150. catch (WebException webex)
  151. {
  152. webResponse = (HttpWebResponse)webex.Response;
  153. StreamReader sr = new StreamReader(webResponse.GetResponseStream());
  154. string temp = sr.ReadToEnd();
  155. string messge = string.Format("通信接口错误,Url={0}", url);
  156. }
  157. catch (Exception ex)
  158. {
  159. string messge = string.Format("通信接口错误,Url={0}", url);
  160. }
  161. finally
  162. {
  163. if (webResponse != null)
  164. {
  165. webResponse.Close();
  166. webResponse = null;
  167. }
  168. if (webRequest != null)
  169. {
  170. webRequest.Abort();
  171. webRequest = null;
  172. }
  173. }
  174. return jobj;
  175. }
  176. internal static JArray SendInfoToWebAPIList(string url, string user_Id = null, string reqMethod = "Get", JArray param = null)
  177. {
  178. JArray jsonobj =new JArray();
  179. //JObject jobj = null;
  180. HttpWebRequest webRequest = null;
  181. HttpWebResponse webResponse = null;
  182. try
  183. {
  184. webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
  185. //webRequest.ContentType = "application/x-www-form-urlencoded";
  186. webRequest.ContentType = "application/json";
  187. //webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) ";
  188. webRequest.Method = reqMethod;
  189. webRequest.AllowAutoRedirect = false;
  190. webRequest.Timeout = 50000;
  191. byte[] PostData = null;
  192. if (user_Id != null)
  193. webRequest.Headers.Add("Authorization", user_Id);
  194. //webRequest.Headers.Add("Authorization", "A1203016");
  195. if (param != null)
  196. {
  197. //string paraUrlCoded = System.Web.HttpUtility.UrlEncode("paramaters");
  198. //paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(jsonParas);
  199. PostData = Encoding.UTF8.GetBytes(param[0].ToString());
  200. webRequest.ContentLength = PostData.Length;
  201. }
  202. if (reqMethod == RequestMethod.Post.ToString())
  203. {
  204. Stream RequestStream = webRequest.GetRequestStream();
  205. if (PostData != null)
  206. {
  207. RequestStream.Write(PostData, 0, PostData.Length);
  208. }
  209. RequestStream.Close();
  210. RequestStream.Dispose();
  211. }
  212. webResponse = (HttpWebResponse)webRequest.GetResponse();
  213. Stream ResponseStrem = webResponse.GetResponseStream();
  214. StreamReader reader = new StreamReader(ResponseStrem);
  215. string ValueString = reader.ReadToEnd();
  216. //jobj = JObject.Parse(ValueString);
  217. jsonobj = JArray.Parse(ValueString);
  218. ResponseStrem.Dispose();
  219. webResponse.Close();
  220. }
  221. catch (WebException webex)
  222. {
  223. //webResponse = (HttpWebResponse)webex.Response;
  224. //StreamReader sr = new StreamReader(webResponse.GetResponseStream());
  225. //string temp = sr.ReadToEnd();
  226. string messge = string.Format("通信接口错误,Url={0}", url);
  227. }
  228. catch (Exception ex)
  229. {
  230. string messge = string.Format("通信接口错误,Url={0}", url);
  231. }
  232. finally
  233. {
  234. if (webResponse != null)
  235. {
  236. webResponse.Close();
  237. webResponse = null;
  238. }
  239. if (webRequest != null)
  240. {
  241. webRequest.Abort();
  242. webRequest = null;
  243. }
  244. }
  245. return jsonobj;
  246. }
  247. private static void AsyncCallbackResponse(IAsyncResult ar)
  248. {
  249. HttpWebRequest webrequest = ar.AsyncState as HttpWebRequest;
  250. var webresponse = webrequest.EndGetResponse(ar) as HttpWebResponse;
  251. Stream ResponseStrem = webresponse.GetResponseStream();
  252. using (StreamReader reader = new StreamReader(ResponseStrem))
  253. {
  254. string ValueString = reader.ReadToEnd();
  255. }
  256. }
  257. /// <summary>
  258. /// 生成Json格式
  259. /// </summary>
  260. public static string GetJson(object obj)
  261. {
  262. DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
  263. using (MemoryStream stream = new MemoryStream())
  264. {
  265. json.WriteObject(stream, obj);
  266. string szJson = Encoding.UTF8.GetString(stream.ToArray());
  267. return szJson;
  268. }
  269. }
  270. /// <summary>
  271. /// 生成Json格式
  272. /// </summary>
  273. public static string GetJson_2<T>(T t)
  274. {
  275. DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
  276. using (MemoryStream stream = new MemoryStream())
  277. {
  278. json.WriteObject(stream, t);
  279. string szJson = Encoding.UTF8.GetString(stream.ToArray());
  280. return szJson;
  281. }
  282. }
  283. /// <summary>
  284. /// Json转Model
  285. /// </summary>
  286. public static T ParseFromJson<T>(string szJson)
  287. {
  288. T obj = Activator.CreateInstance<T>();
  289. using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
  290. {
  291. DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
  292. return (T)serializer.ReadObject(ms);
  293. }
  294. }
  295. /// <summary>
  296. /// Json转List
  297. /// </summary>
  298. public static List<T> ParseToListFromJson<T>(JArray ja)
  299. {
  300. var result = new List<T>();
  301. foreach (var item in ja)
  302. {
  303. result.Add(ParseFromJson<T>(item.ToString()));
  304. }
  305. return result;
  306. }
  307. }
  308. }