HttpUtil.cs 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Net;
  5. using System.Text;
  6. using System.Xml;
  7. using wms.dto.response;
  8. using wms.util.Ext;
  9. namespace wms.util.Http
  10. {
  11. public class HttpUtil
  12. {
  13. public static string ERPWebServerPath = string.Empty;
  14. #region Get请求
  15. /// <summary>
  16. /// Get请求
  17. /// </summary>
  18. /// <param name="remoteUrl">接口地址</param>
  19. /// <param name="timeOut">超时时间</param>
  20. /// <param name="encode">编码方式</param>
  21. /// <param name="contentType">内容格式</param>
  22. public static string GetRequest(string remoteUrl, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json")
  23. {
  24. var result = "";
  25. try
  26. {
  27. var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl);
  28. mRequest.Timeout = timeOut;
  29. mRequest.ContentType = contentType;
  30. var mResponse = (HttpWebResponse)mRequest.GetResponse();
  31. Stream responseStream = mResponse.GetResponseStream();
  32. if (responseStream == null)
  33. {
  34. return string.Empty;
  35. }
  36. using (System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.GetEncoding(encode)))
  37. {
  38. result = reader.ReadToEnd();
  39. }
  40. responseStream.Close();
  41. }
  42. catch (Exception ex)
  43. {
  44. throw ex;
  45. }
  46. return result;
  47. }
  48. #endregion
  49. #region POST请求
  50. /// <summary>
  51. /// 发起HTTP请求
  52. /// </summary>
  53. /// <param name="remoteUrl">接口地址</param>
  54. /// <param name="postData">请求参数</param>
  55. /// <param name="timeOut">超时时间</param>
  56. /// <param name="encode">编码方式</param>
  57. /// <param name="contentType">内容格式</param>
  58. public static string PostRequest(string remoteUrl, string postData, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json",string requestid ="",string sourcecode ="",string servicecode = "")
  59. {
  60. var result = string.Empty;
  61. try
  62. {
  63. var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl);
  64. //相应请求的参数
  65. byte[] data = Encoding.GetEncoding(encode).GetBytes(postData);
  66. mRequest.Method = "Post";
  67. mRequest.ContentType = contentType;
  68. mRequest.ContentLength = data.Length;
  69. mRequest.Timeout = timeOut;
  70. if (!string.IsNullOrEmpty(requestid))
  71. {
  72. mRequest.Headers["requestId"] = requestid;
  73. mRequest.Headers["sourceCode"] = sourcecode;
  74. mRequest.Headers["serviceCode"] = servicecode;
  75. }
  76. //请求流
  77. Stream requestStream = mRequest.GetRequestStream();
  78. requestStream.Write(data, 0, data.Length);
  79. requestStream.Close();
  80. //响应流
  81. var mResponse = (HttpWebResponse)mRequest.GetResponse();
  82. var responseStream = mResponse.GetResponseStream();
  83. Encoding code = Encoding.GetEncoding(encode);
  84. if (responseStream != null)
  85. {
  86. var readStream = new StreamReader(responseStream, code);
  87. var read = new Char[256];
  88. int count = readStream.Read(read, 0, 256);
  89. while (count > 0)
  90. {
  91. var str = new String(read, 0, count);
  92. result = result + str;
  93. count = readStream.Read(read, 0, 256);
  94. }
  95. responseStream.Close();
  96. }
  97. if (!string.IsNullOrEmpty(requestid) && mResponse.Headers["esbCode "] != "000000" && string.IsNullOrEmpty(result))
  98. {
  99. return new SRes() { ResCode = 500, ResMsg = "esbDesc:" + mResponse.Headers["esbDesc"],Memo1 = "esbCode:"+ mResponse.Headers["esbCode"] }.ToCamelCaseString();
  100. }
  101. }
  102. catch (Exception ex)
  103. {
  104. throw ex;
  105. }
  106. return result;
  107. }
  108. /// <summary>
  109. /// 通过POST提交方式获取XML数据
  110. /// </summary>
  111. /// <param name="postData">请求XML内容</param>
  112. /// <param name="remoteUrl">请求URL</param>
  113. /// <returns></returns>
  114. public static XmlDocument PostRequestXml(string remoteUrl, string postData)
  115. {
  116. if (string.IsNullOrEmpty(postData) || string.IsNullOrEmpty(remoteUrl))
  117. {
  118. return null;
  119. }
  120. string result = PostRequest(remoteUrl, postData, 30000, "UTF-8", "application/x-www-form-urlencoded");
  121. if (string.IsNullOrEmpty(result))
  122. {
  123. var xml = new XmlDocument();
  124. xml.LoadXml(result);
  125. return xml;
  126. }
  127. return null;
  128. }
  129. /// <summary>
  130. /// 发起HTTP请求
  131. /// </summary>
  132. /// <param name="remoteUrl">接口地址</param>
  133. /// <param name="postData">请求参数</param>
  134. /// <param name="timeOut">超时时间</param>
  135. /// <param name="encode">编码方式</param>
  136. /// <param name="contentType">内容格式</param>
  137. public static string PostRequestByWebApi(string remoteUrl, string postData, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json")//application/x-www-form-urlencoded application/json
  138. {
  139. var result = string.Empty;
  140. try
  141. {
  142. if (string.IsNullOrEmpty(remoteUrl))
  143. remoteUrl = ERPWebServerPath;
  144. var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl);
  145. //相应请求的参数
  146. byte[] data = Encoding.GetEncoding(encode).GetBytes(postData);
  147. mRequest.MaximumAutomaticRedirections = data.Length;
  148. mRequest.MaximumResponseHeadersLength = data.Length;
  149. mRequest.Method = "Post";
  150. mRequest.ContentType = contentType;
  151. mRequest.ContentLength = data.Length;
  152. mRequest.Timeout = timeOut;
  153. //请求流
  154. Stream requestStream = mRequest.GetRequestStream();
  155. requestStream.Write(data, 0, data.Length);
  156. requestStream.Close();
  157. //响应流
  158. var mResponse = (HttpWebResponse)mRequest.GetResponse();
  159. var responseStream = mResponse.GetResponseStream();
  160. Encoding code = Encoding.GetEncoding(encode);
  161. if (responseStream != null)
  162. {
  163. var readStream = new StreamReader(responseStream, code);
  164. var read = new Char[256];
  165. int count = readStream.Read(read, 0, 256);
  166. while (count > 0)
  167. {
  168. var str = new String(read, 0, count);
  169. result = result + str;
  170. count = readStream.Read(read, 0, 256);
  171. }
  172. responseStream.Close();
  173. }
  174. }
  175. catch (Exception ex)
  176. {
  177. throw ex;
  178. }
  179. return result;
  180. }
  181. #endregion
  182. }
  183. }