using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace HH.AutoBom.Utils { public class WebApiManager { #region HttpPost请求 /// /// HttpPost请求 /// /// /// /// public static string HttPost(string apiPath, string data) { string returnStr = ""; try { string url = GetApiUrl() + apiPath; //对所有代码产生的垃圾资源进行强制回收-慎用 //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); 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 { returnStr = ""; } return returnStr; } #endregion #region Http GET请求 /// /// Http GET /// /// /// public static string HttpGet(string apiPath, string paramStr = "") { string webUrl = GetApiUrl() + apiPath; string Data = webUrl + (paramStr == "" ? "" : "?") + paramStr; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Data); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } #endregion #region 获得webapi的地址 不包括后面的控制器等 /// /// 获得webapi的地址 不包括后面的控制器等 /// /// public static string GetApiUrl() { //获得配置文件中ERP的IP和端口 string erpAddress = System.Configuration.ConfigurationManager.AppSettings["WeApiIp"].ToString(); string erpPort = System.Configuration.ConfigurationManager.AppSettings["WebApiPort"].ToString(); string url = "http://" + erpAddress + ":" + erpPort + "/"; return url; } #endregion #region HttpGETData请求 /// /// Http GET /// /// /// public static string HttpGetData(string apiPath, string paramStr = "") { string webUrl = GetUrl() + apiPath; string Data = webUrl + (paramStr == "" ? "" : "?") + paramStr; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Data); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } #endregion #region HttPostData请求 /// /// HttpPost请求 /// /// /// /// public static string HttPostData(string apiPath, string data) { string returnStr = ""; try { string url = GetUrl() + apiPath; //对所有代码产生的垃圾资源进行强制回收-慎用 //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); 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 { returnStr = ""; } return returnStr; } #endregion #region 获得webapi的地址 不包括后面的控制器等 /// /// 获得webapi的地址 不包括后面的控制器等 /// /// public static string GetUrl() { //获得配置文件中ERP的IP和端口 string erpAddress = System.Configuration.ConfigurationManager.AppSettings["WebIp"].ToString(); string erpPort = System.Configuration.ConfigurationManager.AppSettings["WebPort"].ToString(); string url = "http://" + erpAddress + ":" + erpPort + "/"; return url; } #endregion } }