using System.Net.Cache;
using System.Net;
using System.Text;
using Newtonsoft.Json;
using System.Data.SqlClient;
namespace Gs.Toolbox;
public class InterfaceUtil
{
///
///
///
/// json参数
///
///
///
/// 如果为2,则是更新工单状态
/// 如果成功返回日志guid,否则返回串
public static (int, string) HttpPostErp(string param, string edtUserGuid = "", string abtGuid = "", string hNo = "", int urlType = 0)
{
int _rtn = 0;
//日志详细,发送的时候,记录日志,存储过程调用的时候,再累加上mes业务的操作结果
System.Text.StringBuilder sbLog = new System.Text.StringBuilder();
sbLog.Append(DateTime.Now.ToString() + "开始发送");
string strLogGuid = Guid.NewGuid().ToString();
string url = AppSettingsHelper.getValueByKey("TestErpUrl");
if (urlType == 2)
url = AppSettingsHelper.getValueByKey("TestErpUrl2");
HttpWebRequest request = null;
StreamWriter requestStream = null;
WebResponse response = null;
string responseStr = "";
try
{
request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
request.Accept = "*/*";
request.Timeout = 150000;
request.AllowAutoRedirect = false;
request.ServicePoint.Expect100Continue = false;
HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore);
request.CachePolicy = noCachePolicy;
requestStream = new StreamWriter(request.GetRequestStream());
requestStream.Write(param);
requestStream.Close();
response = request.GetResponse();
if (response != null)
{
var reader = new StreamReader(response.GetResponseStream(),
Encoding.UTF8);
responseStr = reader.ReadToEnd();
reader.Close();
}
}
catch (Exception ex)
{
LogHelper.Debug(url, "HttpPostErp response:" + param + ",ex:" + ex.Message);
responseStr = ex.Message;
_rtn = -1;
}
finally
{
request = null;
requestStream = null;
response = null;
}
if (_rtn != -1)
{
Result _result = JsonConvert.DeserializeObject(responseStr);
if ("200".Equals(_result.state))
_rtn = 1;
}
sbLog.Append("," + DateTime.Now.ToString() + "结束发送");
if (_rtn > 0)
sbLog.Append(",发送成功");
else
sbLog.Append(",发送失败,mes退出操作");
try
{
SqlParameter[] parameters =
{
new("@edtUserGuid", edtUserGuid),
new("@abtGuid", abtGuid),
new("@abtTable", ""),
new("@detail", sbLog.ToString()),
new("@hNo", hNo),
new("@RtnLogGuid", strLogGuid),
new("@SendJson", param),
new("@RtnJson", responseStr),
new("@isSuccess", (_rtn>0?1:0)),
new("@isErp", 1),
};
DbHelperSQL.RunProcedure("[prc_log_create]", parameters);
}
catch (Exception ex)
{
LogHelper.Debug(url, "HttpPostErp 写入日志表" + ex.Message);
}
return (_rtn, (_rtn > 0 ? strLogGuid : responseStr));
}
}
public class Result
{
///
/// 200成功,否则失败
///
public string? state { get; set; }
public string? msg { get; set; }
public string? status { get; set; }
public string? message { get; set; }
}