using Newtonsoft.Json;
|
using Org.BouncyCastle.Ocsp;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Net;
|
using System.Security.Cryptography;
|
using System.Text;
|
using static HH.WCS.DaYang.api.ApiModel;
|
|
namespace HH.WCS.DaYang.util
|
{
|
public class HttpHelper
|
{
|
public string WebPost(string url, string postData, string cotentType = "application/json")
|
{
|
Console.WriteLine(url);
|
WebRequest request = WebRequest.Create(url);
|
request.Method = "POST";
|
//string postData = JsonConvert.SerializeObject(data); ;
|
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
|
request.ContentType = cotentType;
|
request.ContentLength = byteArray.Length;
|
request.Timeout = 3000;
|
|
try
|
{
|
Stream dataStream = request.GetRequestStream();
|
dataStream.Write(byteArray, 0, byteArray.Length);
|
dataStream.Close();
|
WebResponse response = request.GetResponse();
|
//Console.WriteLine(((HttpWebResponse)response).StatusDescription);
|
dataStream = response.GetResponseStream();
|
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
|
string responseFromServer = reader.ReadToEnd();
|
reader.Close();
|
dataStream.Close();
|
response.Close();
|
return responseFromServer;
|
}
|
catch (Exception e)
|
{
|
Console.WriteLine(e.Message);
|
return "";
|
}
|
}
|
public string WebPostMobox(string url, string postData, string cotentType = "application/json")
|
{
|
Console.WriteLine(url);
|
WebRequest request = WebRequest.Create(url);
|
request.Method = "POST";
|
//string postData = JsonConvert.SerializeObject(data); ;
|
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
|
|
|
request.ContentType = cotentType;
|
request.ContentLength = byteArray.Length;
|
request.Timeout = 3000;
|
|
|
string appkey = "OpenInfo";
|
|
//获取ReqVerify
|
|
var AppKey = Settings.AppKey;
|
var AppSecret = Settings.AppSecret;
|
//获取时间戳
|
var ReqTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
|
//var ReqTime = GetTimeStamp(DateTime.Now.AddHours(-8), 1, 2);
|
LogHelper.Info($"加密前 AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime} ");
|
LogHelper.Info($"地址:{url},内容:{postData}");
|
var ReqVerify = GetMd5FromString(AppKey + AppSecret + ReqTime);
|
LogHelper.Info($"加密后 AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime} ReqVerify={ReqVerify} url={url} req={postData}");
|
|
request.Headers.Add("ReqTime", ReqTime.ToString());
|
request.Headers.Add("ReqVerify", ReqVerify);
|
request.Headers.Add("AppKey", appkey);
|
|
|
|
try
|
{
|
Stream dataStream = request.GetRequestStream();
|
dataStream.Write(byteArray, 0, byteArray.Length);
|
dataStream.Close();
|
WebResponse response = request.GetResponse();
|
//Console.WriteLine(((HttpWebResponse)response).StatusDescription);
|
dataStream = response.GetResponseStream();
|
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
|
string responseFromServer = reader.ReadToEnd();
|
reader.Close();
|
dataStream.Close();
|
response.Close();
|
return responseFromServer;
|
}
|
catch (Exception e)
|
{
|
Console.WriteLine(e.Message);
|
return "";
|
}
|
}
|
/// <summary>
|
/// MD5加密
|
/// </summary>
|
/// <param name="sInput"></param>
|
/// <returns></returns>
|
public static string GetMd5FromString(string sInput)
|
{
|
var lstData = Encoding.GetEncoding("utf-8").GetBytes(sInput);
|
var lstHash = new MD5CryptoServiceProvider().ComputeHash(lstData);
|
var result = new StringBuilder(32);
|
for (int i = 0; i < lstHash.Length; i++)
|
{
|
result.Append(lstHash[i].ToString("x2").ToUpper());
|
}
|
return result.ToString();
|
}
|
public string WebGet(string url)
|
{
|
//using (var client = new HttpClient()) {
|
// //请求结果
|
// string result = client.GetAsync(url).Result.Content.ReadAsStringAsync().Result;
|
|
// Console.WriteLine(result);
|
// return result;
|
|
//}
|
//Console.WriteLine(url);
|
WebRequest request = WebRequest.Create(url);
|
request.Timeout = 6000;
|
request.Method = "GET";
|
|
try
|
{
|
WebResponse response = request.GetResponse();
|
Stream dataStream = response.GetResponseStream();
|
StreamReader reader = new StreamReader(dataStream);
|
string responseFromServer = reader.ReadToEnd();
|
|
reader.Close();
|
dataStream.Close();
|
response.Close();
|
Console.WriteLine(responseFromServer);
|
return responseFromServer;
|
}
|
catch (Exception e)
|
{
|
return "";
|
}
|
}
|
|
public string Get(string url, string contentType = "application/x-www-form-urlencoded")
|
{
|
WebRequest request = WebRequest.Create(url);
|
request.Method = "Get";
|
request.ContentType = contentType;
|
StreamReader reader = null;
|
Stream stream = null;
|
WebResponse rsp = null;
|
try
|
{
|
|
rsp = request.GetResponse();
|
stream = rsp.GetResponseStream();
|
reader = new StreamReader(stream);
|
return reader.ReadToEnd();
|
}
|
catch
|
{
|
return "";
|
}
|
finally
|
{
|
// 释放资源
|
if (reader != null) reader.Close();
|
if (stream != null) stream.Close();
|
if (rsp != null) rsp.Close();
|
}
|
|
}
|
|
public string Post(string url, string postData, string contentType = "application/json", string sessionId = "")
|
{
|
Console.WriteLine(url);
|
WebRequest request = WebRequest.Create(url);
|
request.Method = "POST";
|
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
|
request.ContentType = contentType;
|
request.ContentLength = byteArray.Length;
|
request.Timeout = 3000;
|
if (sessionId != "")
|
{
|
request.Headers.Set("ASP.NET_SessionId", sessionId);
|
}
|
StreamReader reader = null;
|
Stream stream = null;
|
WebResponse rsp = null;
|
try
|
{
|
stream = request.GetRequestStream();
|
stream.Write(byteArray, 0, byteArray.Length);
|
stream.Close();
|
rsp = request.GetResponse();
|
stream = rsp.GetResponseStream();
|
reader = new StreamReader(stream);
|
return reader.ReadToEnd();
|
}
|
catch (Exception ex)
|
{
|
Console.WriteLine($"{url} err={ex.Message}");
|
return "";
|
}
|
finally
|
{
|
// 释放资源
|
if (reader != null) reader.Close();
|
if (stream != null) stream.Close();
|
if (rsp != null) rsp.Close();
|
}
|
|
}
|
|
|
public string Post(string url, Dictionary<string, string> dic)
|
{
|
var param = dic.Select(a => { return string.Format("{0}={1}", a.Key, a.Value); }).ToList();
|
return Post(url, string.Join("&", param), "application/x-www-form-urlencoded");
|
|
}
|
|
public string PostWithCookie(string url, string sessinId)
|
{
|
return PostWithCookie(url, "", "", sessinId);
|
}
|
public string PostWithCookie(string url, string postData, string contentType = "application/json", string sessionId = "")
|
{
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
request.Method = "POST";
|
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
|
request.ContentType = contentType;
|
request.ContentLength = byteArray.Length;
|
if (sessionId != "")
|
{
|
request.CookieContainer = new CookieContainer();
|
request.CookieContainer.SetCookies(new Uri("http://" + request.RequestUri.Authority), "ASP.NET_SessionId=" + sessionId);
|
}
|
StreamReader reader = null;
|
Stream stream = null;
|
WebResponse rsp = null;
|
try
|
{
|
stream = request.GetRequestStream();
|
stream.Write(byteArray, 0, byteArray.Length);
|
stream.Close();
|
rsp = request.GetResponse();
|
stream = rsp.GetResponseStream();
|
reader = new StreamReader(stream);
|
return reader.ReadToEnd();
|
}
|
catch
|
{
|
return "";
|
}
|
finally
|
{
|
// 释放资源
|
if (reader != null) reader.Close();
|
if (stream != null) stream.Close();
|
if (rsp != null) rsp.Close();
|
}
|
|
}
|
|
/// <summary>
|
/// 获取设备状态
|
/// </summary>
|
/// <param name="Locs">货位</param>
|
/// <param name="url">地址</param>
|
public Result<DeviceStatusModel> GetDeviceStatus(string[] Locs, string url)
|
{
|
//返回信息
|
Result<DeviceStatusModel> deviceStatus = new Result<DeviceStatusModel>();
|
try
|
{
|
string date = JsonConvert.SerializeObject(Locs);
|
LogHelper.Info($"获取设备状态:地址:{url},内容:{date}");
|
var r = WebPost(url, date);
|
LogHelper.Info($"获取设备状态:返回内容:{r}");
|
deviceStatus = JsonConvert.DeserializeObject<Result<DeviceStatusModel>>(r);
|
if (deviceStatus.Code == 200)
|
{
|
LogHelper.Info($"获取设备状态成功");
|
}
|
else
|
{
|
LogHelper.Info($"获取设备状态失败=>msg:{deviceStatus.Msg}");
|
}
|
return deviceStatus;
|
}
|
catch (Exception ex)
|
{
|
|
LogHelper.Info($"获取设备状态错误:error:{ex.Message},行号:{ex.StackTrace}");
|
return deviceStatus;
|
}
|
|
}
|
|
/// <summary>
|
/// 下发任务
|
/// </summary>
|
/// <param name="Locs">货位</param>
|
/// <param name="url">地址</param>
|
public Result<Empty> TaskAssignment(WCSTask task, string url)
|
{
|
//返回信息
|
Result<Empty> result = new Result<Empty>();
|
try
|
{
|
TaskPushModel taskPushModel = new TaskPushModel();
|
taskPushModel.From = task.S_START_LOC;
|
taskPushModel.To = task.S_END_LOC;
|
taskPushModel.TaskNo = task.S_CODE;
|
taskPushModel.TaskType = task.S_TYPE;
|
taskPushModel.CntrNo = task.S_CNTR_CODE;
|
|
|
string date = JsonConvert.SerializeObject(taskPushModel);
|
LogHelper.Info($"下发任务:地址:{url},内容:{date}");
|
var r = WebPost(url, date);
|
LogHelper.Info($"下发任务:返回内容:{r}");
|
result = JsonConvert.DeserializeObject<Result<Empty>>(r);
|
if (result.Code == 200)
|
{
|
LogHelper.Info($"下发任务成功");
|
}
|
else
|
{
|
LogHelper.Info($"下发任务失败=>msg:{result.Msg}");
|
}
|
return result;
|
}
|
catch (Exception ex)
|
{
|
|
LogHelper.Info($"下发任务=>错误:error:{ex.Message},行号:{ex.StackTrace}");
|
return result;
|
}
|
|
}
|
}
|
}
|