HTTP.cs 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using NPOI.SS.Formula.Functions;
  4. using Org.BouncyCastle.Asn1.Ocsp;
  5. using System;
  6. using System.IO;
  7. using System.Net;
  8. using System.Net.NetworkInformation;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace MainForm
  12. {
  13. /// <summary>
  14. /// Http工具类
  15. /// </summary>
  16. class HttpUitls
  17. {
  18. /// <summary>
  19. /// Get请求
  20. /// </summary>
  21. /// <param name="Url"></param>
  22. /// <returns></returns>
  23. public static ResponseData Get(string Url)
  24. {
  25. ResponseData responseData = new ResponseData();
  26. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
  27. HttpWebResponse response = null;
  28. Stream myResponseStream = null;
  29. StreamReader myStreamReader = null;
  30. try
  31. {
  32. request.Proxy = null;
  33. request.KeepAlive = false;
  34. request.Method = "GET";
  35. request.ContentType = "application/json; charset=UTF-8";
  36. //request.ContentType = "application/x-www-form-urlencoded";//窗体数据被编码为名称/值对形式
  37. request.AutomaticDecompression = DecompressionMethods.GZip;
  38. response = (HttpWebResponse)request.GetResponse();
  39. myResponseStream = response.GetResponseStream();
  40. myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
  41. string retString = myStreamReader.ReadToEnd();
  42. //解析结果
  43. JObject joRoot;
  44. joRoot = (JObject)JsonConvert.DeserializeObject(retString);
  45. responseData = new ResponseData
  46. {
  47. code = joRoot["code"].ToString(),
  48. msg = joRoot["msg"].ToString(),
  49. data = joRoot["data"].ToString()
  50. };
  51. }
  52. catch (Exception ex)
  53. {
  54. responseData = new ResponseData
  55. {
  56. code = "",
  57. msg = ex.Message.ToString(),
  58. data = string.Empty
  59. };
  60. }
  61. finally
  62. {
  63. response?.Close();
  64. request?.Abort();
  65. myStreamReader?.Close();
  66. myResponseStream?.Close();
  67. }
  68. return responseData;
  69. }
  70. /// <summary>
  71. /// Post请求可用
  72. /// </summary>
  73. /// <param name="Url"></param>
  74. /// <param name="Data"></param>
  75. /// <param name="Referer"></param>
  76. /// <returns></returns>
  77. public static ResponseData Post(string url, string data)
  78. {
  79. ResponseData responseData = new ResponseData();
  80. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  81. Stream myResponseStream = null;
  82. StreamReader myStreamReader = null;
  83. HttpWebResponse response = null;
  84. try
  85. {
  86. request = (HttpWebRequest)WebRequest.Create(url);
  87. request.Method = "POST";
  88. request.Referer = "";
  89. //request.Proxy = new WebProxy("192.168.1.12",80);
  90. byte[] bytes = Encoding.UTF8.GetBytes(data);
  91. //request.ContentType = "multipart/form-data; charset=UTF-8"; ;//窗体数据被编码为名称/值对形式
  92. request.ContentType = "application/json;charset=utf-8";
  93. request.ContentLength = bytes.Length;
  94. myResponseStream = request.GetRequestStream();
  95. myResponseStream.Write(bytes, 0, bytes.Length);
  96. string retString;
  97. response = (HttpWebResponse)request.GetResponse();
  98. myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
  99. retString = myStreamReader.ReadToEnd();
  100. //解析结果
  101. JObject joRoot;
  102. joRoot = (JObject)JsonConvert.DeserializeObject(retString);
  103. responseData = new ResponseData
  104. {
  105. code = joRoot["code"].ToString(),
  106. msg = joRoot["msg"].ToString(),
  107. data = joRoot["data"].ToString()
  108. };
  109. }
  110. catch (Exception ex)
  111. {
  112. responseData = new ResponseData
  113. {
  114. code = string.Empty,
  115. msg = ex.Message.ToString(),
  116. data = string.Empty
  117. };
  118. }
  119. finally
  120. {
  121. response?.Close();
  122. request?.Abort();
  123. myStreamReader?.Close();
  124. myResponseStream?.Close();
  125. }
  126. return responseData;
  127. }
  128. public static bool PingIP(string address)
  129. {
  130. try
  131. {
  132. Ping p = new Ping();
  133. PingReply r = p.Send(address, 1200);
  134. if (r.Status == IPStatus.Success) return true;
  135. return false;
  136. }
  137. catch (Exception ex)
  138. {
  139. return false;
  140. }
  141. }
  142. /// <summary>
  143. /// 上传文件
  144. /// </summary>
  145. /// <param name="url">地址</param>
  146. /// <param name="path">路径</param>
  147. /// <returns></returns>
  148. public static string HttpUploadFile(string url, string path)
  149. {
  150. // 设置参数
  151. HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
  152. CookieContainer cookieContainer = new CookieContainer();
  153. request.CookieContainer = cookieContainer;
  154. request.AllowAutoRedirect = true;
  155. request.Method = "POST";
  156. string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
  157. request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
  158. byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
  159. byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
  160. int pos = path.LastIndexOf("\\");
  161. string fileName = path.Substring(pos + 1);
  162. //请求头部信息
  163. // StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"file\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName));
  164. StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"inputs\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName));
  165. byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());
  166. FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
  167. byte[] bArr = new byte[fs.Length];
  168. fs.Read(bArr, 0, bArr.Length);
  169. fs.Close();
  170. Stream postStream = request.GetRequestStream();
  171. postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
  172. postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
  173. postStream.Write(bArr, 0, bArr.Length);
  174. postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
  175. postStream.Close();
  176. //发送请求并获取相应回应数据
  177. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  178. //直到request.GetResponse()程序才开始向目标网页发送Post请求
  179. Stream instream = response.GetResponseStream();
  180. StreamReader sr = new StreamReader(instream, Encoding.UTF8);
  181. //返回结果网页(html)代码
  182. string content = sr.ReadToEnd();
  183. return content;
  184. }
  185. /// <summary>
  186. /// 提交数据到MES
  187. /// </summary>
  188. /// <param name="url">地址</param>
  189. /// <param name="data">数据</param>
  190. /// <returns></returns>
  191. public static string SubmitDataToMES(string url, string data)
  192. {
  193. string ret = string.Empty;
  194. ResponseData responseData = HttpUitls.Post(url, data);
  195. if (responseData.code == "200")
  196. {
  197. ret = "成功";
  198. }
  199. else
  200. {
  201. ret = responseData.msg;
  202. }
  203. return ret;
  204. }
  205. /// <summary>
  206. /// 获取订单信息 By 订单号
  207. /// </summary>
  208. /// <param name="data"></param>
  209. /// <returns></returns>
  210. public static WorkOrderInfo GetWOData(string sono)
  211. {
  212. string url = @"HTTP://" + GlobalContext.ServerHost + @"/api/ProductionLine/GetWorkOrderInfo";
  213. WorkOrderInfo ret = new WorkOrderInfo();
  214. WO wo = new WO { sono = sono };
  215. ResponseData responseData = HttpUitls.Post(url, JsonConvert.SerializeObject(wo));
  216. try
  217. {
  218. if (responseData.code == "200")
  219. {
  220. JObject joRoot;
  221. joRoot = (JObject)JsonConvert.DeserializeObject(responseData.data);
  222. ret.sono = joRoot["sono"].ToString();
  223. ret.prtno = joRoot["prtno"].ToString();
  224. ret.mtltmrk = joRoot["mtltmrk"].ToString();
  225. ret.prtdesc = joRoot["prtdesc"].ToString();
  226. ret.prodline = joRoot["prodline"].ToString();
  227. ret.splcode = joRoot["splcode"].ToString();
  228. ret.soporqty = joRoot["soporqty"].ToString();
  229. ret.plnsign = joRoot["plnsign"].ToString();
  230. ret.soreqdat = joRoot["soreqdat"].ToString();
  231. }
  232. else
  233. {
  234. ret = null;
  235. }
  236. }
  237. catch(Exception ex)
  238. {
  239. ret = null;
  240. }
  241. return ret;
  242. }
  243. }
  244. }