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;
}
}
}