using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NPOI.SS.Formula.Functions; using Org.BouncyCastle.Asn1.Ocsp; using System; using System.IO; using System.Net; using System.Net.NetworkInformation; using System.Text; using System.Threading.Tasks; namespace MainForm { /// /// Http工具类 /// class HttpUitls { /// /// Get请求 /// /// /// public static ResponseData Get(string Url) { ResponseData responseData = new ResponseData(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); HttpWebResponse response = null; Stream myResponseStream = null; StreamReader myStreamReader = null; try { request.Proxy = null; request.KeepAlive = false; request.Method = "GET"; request.ContentType = "application/json; charset=UTF-8"; //request.ContentType = "application/x-www-form-urlencoded";//窗体数据被编码为名称/值对形式 request.AutomaticDecompression = DecompressionMethods.GZip; response = (HttpWebResponse)request.GetResponse(); myResponseStream = response.GetResponseStream(); myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string retString = myStreamReader.ReadToEnd(); //解析结果 JObject joRoot; joRoot = (JObject)JsonConvert.DeserializeObject(retString); responseData = new ResponseData { code = joRoot["code"].ToString(), msg = joRoot["msg"].ToString(), data = joRoot["data"].ToString() }; } catch (Exception ex) { responseData = new ResponseData { code = "", msg = ex.Message.ToString(), data = string.Empty }; } finally { response?.Close(); request?.Abort(); myStreamReader?.Close(); myResponseStream?.Close(); } return responseData; } /// /// Post请求可用 /// /// /// /// /// public static ResponseData Post(string url, string data) { ResponseData responseData = new ResponseData(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); Stream myResponseStream = null; StreamReader myStreamReader = null; HttpWebResponse response = null; try { request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Referer = ""; //request.Proxy = new WebProxy("192.168.1.12",80); byte[] bytes = Encoding.UTF8.GetBytes(data); //request.ContentType = "multipart/form-data; charset=UTF-8"; ;//窗体数据被编码为名称/值对形式 request.ContentType = "application/json;charset=utf-8"; request.ContentLength = bytes.Length; myResponseStream = request.GetRequestStream(); myResponseStream.Write(bytes, 0, bytes.Length); string retString; response = (HttpWebResponse)request.GetResponse(); myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); retString = myStreamReader.ReadToEnd(); //解析结果 JObject joRoot; joRoot = (JObject)JsonConvert.DeserializeObject(retString); responseData = new ResponseData { code = joRoot["code"].ToString(), msg = joRoot["msg"].ToString(), data = joRoot["data"].ToString() }; } catch (Exception ex) { responseData = new ResponseData { code = string.Empty, msg = ex.Message.ToString(), data = string.Empty }; } finally { response?.Close(); request?.Abort(); myStreamReader?.Close(); myResponseStream?.Close(); } return responseData; } public static bool PingIP(string address) { try { Ping p = new Ping(); PingReply r = p.Send(address, 1200); if (r.Status == IPStatus.Success) return true; return false; } catch (Exception ex) { return false; } } /// /// 上传文件 /// /// 地址 /// 路径 /// public static string HttpUploadFile(string url, string path) { // 设置参数 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; CookieContainer cookieContainer = new CookieContainer(); request.CookieContainer = cookieContainer; request.AllowAutoRedirect = true; request.Method = "POST"; string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线 request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary; byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n"); byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); int pos = path.LastIndexOf("\\"); string fileName = path.Substring(pos + 1); //请求头部信息 // 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)); 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)); byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString()); FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); byte[] bArr = new byte[fs.Length]; fs.Read(bArr, 0, bArr.Length); fs.Close(); Stream postStream = request.GetRequestStream(); postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length); postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length); postStream.Write(bArr, 0, bArr.Length); postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length); postStream.Close(); //发送请求并获取相应回应数据 HttpWebResponse response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才开始向目标网页发送Post请求 Stream instream = response.GetResponseStream(); StreamReader sr = new StreamReader(instream, Encoding.UTF8); //返回结果网页(html)代码 string content = sr.ReadToEnd(); return content; } /// /// 提交数据到MES /// /// 地址 /// 数据 /// public static string SubmitDataToMES(string url, string data) { string ret = string.Empty; ResponseData responseData = HttpUitls.Post(url, data); if (responseData.code == "200") { ret = "成功"; } else { ret = responseData.msg; } return ret; } /// /// 获取订单信息 By 订单号 /// /// /// public static WorkOrderInfo GetWOData(string sono) { string url = @"HTTP://" + GlobalContext.ServerHost + @"/api/ProductionLine/GetWorkOrderInfo"; WorkOrderInfo ret = new WorkOrderInfo(); WO wo = new WO { sono = sono }; ResponseData responseData = HttpUitls.Post(url, JsonConvert.SerializeObject(wo)); try { if (responseData.code == "200") { JObject joRoot; joRoot = (JObject)JsonConvert.DeserializeObject(responseData.data); ret.sono = joRoot["sono"].ToString(); ret.prtno = joRoot["prtno"].ToString(); ret.mtltmrk = joRoot["mtltmrk"].ToString(); ret.prtdesc = joRoot["prtdesc"].ToString(); ret.prodline = joRoot["prodline"].ToString(); ret.splcode = joRoot["splcode"].ToString(); ret.soporqty = joRoot["soporqty"].ToString(); ret.plnsign = joRoot["plnsign"].ToString(); ret.soreqdat = joRoot["soreqdat"].ToString(); } else { ret = null; } } catch(Exception ex) { ret = null; } return ret; } } }