using HH.WMS.Client.Common; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace HH.WMS.Client { public class WebApiManager { public static string HttpWMS_Post(string apiPath, string data) { string url = GetWMSAddress() + apiPath; return Post(url, data); } public static string HttpWMS_Get(string apiPath, string paramStr = "") { string url = GetWMSAddress() + apiPath; return Get(url, paramStr); } #region 获得WMS的地址 /// /// 获得webapi的地址 不包括后面的控制器等 /// /// public static string GetWMSAddress() { //获得配置文件中ERP的IP和端口 string autoBomAddress = StaticUtil.ServiceUrl; string url = "http://"+autoBomAddress + "/"; return url; } #endregion private static string Post(string url, string data) { string returnStr = ""; try { //对所有代码产生的垃圾资源进行强制回收-慎用 //System.GC.Collect(); //请求地址获取用户授权信息 WebRequest webRequest = System.Net.WebRequest.Create(url); webRequest.Timeout = 1000000;//设置请求超时时间10秒 HttpWebRequest httpRequest = webRequest as System.Net.HttpWebRequest; httpRequest.Method = "post"; httpRequest.ContentType = "application/json"; httpRequest.KeepAlive = false;//设置不是常连接 System.Text.Encoding encoding = System.Text.Encoding.UTF8; byte[] bytesToPost = encoding.GetBytes(data); httpRequest.ContentLength = bytesToPost.Length; System.IO.Stream requestStream = httpRequest.GetRequestStream(); requestStream.Write(bytesToPost, 0, bytesToPost.Length); requestStream.Close(); HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader Reader = new StreamReader(stream, Encoding.UTF8); returnStr = Reader.ReadToEnd(); if (!string.IsNullOrEmpty(returnStr)) { returnStr = returnStr.Replace("\\", ""); returnStr = returnStr.TrimEnd('\"'); returnStr = returnStr.TrimStart('\"'); } if (webRequest != null) { webRequest.Abort(); } if (httpRequest != null) { httpRequest.Abort(); } if (response != null) { response.Dispose(); response.Close(); } if (stream != null) { stream.Dispose(); stream.Close(); } if (Reader != null) { Reader.Dispose(); Reader.Close(); } } catch (Exception ex) { returnStr = JsonConvert.SerializeObject(OperateResult.Error(ex.Message)); } return returnStr; } private static string Get(string url, string paramStr = "") { string Data = url + (paramStr == "" ? "" : "?") + paramStr; if (Data.IndexOf("?") > 0) { //包含参数 Data += "&tokenId=" +StaticUtil.TokenId; } else { Data += "?tokenId=" + StaticUtil.TokenId; } try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Data); request.Method = "GET"; request.ContentType = "application/json"; request.KeepAlive = false;//设置不是常连接 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); if (!string.IsNullOrEmpty(retString)) { retString = retString.Replace("\\", ""); retString = retString.TrimEnd('\"'); retString = retString.TrimStart('\"'); } myStreamReader.Close(); myResponseStream.Close(); if (request != null) { request.Abort(); } if (response != null) { response.Dispose(); response.Close(); } if (myResponseStream != null) { myResponseStream.Dispose(); myResponseStream.Close(); } if (myStreamReader != null) { myStreamReader.Dispose(); myStreamReader.Close(); } return retString; } catch (Exception ex) { return JsonConvert.SerializeObject(OperateResult.Error(ex.Message)); } } } }