using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using System.Xml; using wms.dto.response; using wms.util.Ext; namespace wms.util.Http { public class HttpUtil { public static string ERPWebServerPath = string.Empty; #region Get请求 /// /// Get请求 /// /// 接口地址 /// 超时时间 /// 编码方式 /// 内容格式 public static string GetRequest(string remoteUrl, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json") { var result = ""; try { var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl); mRequest.Timeout = timeOut; mRequest.ContentType = contentType; var mResponse = (HttpWebResponse)mRequest.GetResponse(); Stream responseStream = mResponse.GetResponseStream(); if (responseStream == null) { return string.Empty; } using (System.IO.StreamReader reader = new System.IO.StreamReader(responseStream, Encoding.GetEncoding(encode))) { result = reader.ReadToEnd(); } responseStream.Close(); } catch (Exception ex) { throw ex; } return result; } #endregion #region POST请求 /// /// 发起HTTP请求 /// /// 接口地址 /// 请求参数 /// 超时时间 /// 编码方式 /// 内容格式 public static string PostRequest(string remoteUrl, string postData, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json",string requestid ="",string sourcecode ="",string servicecode = "") { var result = string.Empty; try { var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl); //相应请求的参数 byte[] data = Encoding.GetEncoding(encode).GetBytes(postData); mRequest.Method = "Post"; mRequest.ContentType = contentType; mRequest.ContentLength = data.Length; mRequest.Timeout = timeOut; if (!string.IsNullOrEmpty(requestid)) { mRequest.Headers["requestId"] = requestid; mRequest.Headers["sourceCode"] = sourcecode; mRequest.Headers["serviceCode"] = servicecode; } //请求流 Stream requestStream = mRequest.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); //响应流 var mResponse = (HttpWebResponse)mRequest.GetResponse(); var responseStream = mResponse.GetResponseStream(); Encoding code = Encoding.GetEncoding(encode); if (responseStream != null) { var readStream = new StreamReader(responseStream, code); var read = new Char[256]; int count = readStream.Read(read, 0, 256); while (count > 0) { var str = new String(read, 0, count); result = result + str; count = readStream.Read(read, 0, 256); } responseStream.Close(); } if (!string.IsNullOrEmpty(requestid) && mResponse.Headers["esbCode "] != "000000" && string.IsNullOrEmpty(result)) { return new SRes() { ResCode = 500, ResMsg = "esbDesc:" + mResponse.Headers["esbDesc"],Memo1 = "esbCode:"+ mResponse.Headers["esbCode"] }.ToCamelCaseString(); } } catch (Exception ex) { throw ex; } return result; } /// /// 通过POST提交方式获取XML数据 /// /// 请求XML内容 /// 请求URL /// public static XmlDocument PostRequestXml(string remoteUrl, string postData) { if (string.IsNullOrEmpty(postData) || string.IsNullOrEmpty(remoteUrl)) { return null; } string result = PostRequest(remoteUrl, postData, 30000, "UTF-8", "application/x-www-form-urlencoded"); if (string.IsNullOrEmpty(result)) { var xml = new XmlDocument(); xml.LoadXml(result); return xml; } return null; } /// /// 发起HTTP请求 /// /// 接口地址 /// 请求参数 /// 超时时间 /// 编码方式 /// 内容格式 public static string PostRequestByWebApi(string remoteUrl, string postData, int timeOut = 30000, string encode = "UTF-8", string contentType = "application/json")//application/x-www-form-urlencoded application/json { var result = string.Empty; try { if (string.IsNullOrEmpty(remoteUrl)) remoteUrl = ERPWebServerPath; var mRequest = (HttpWebRequest)WebRequest.Create(remoteUrl); //相应请求的参数 byte[] data = Encoding.GetEncoding(encode).GetBytes(postData); mRequest.MaximumAutomaticRedirections = data.Length; mRequest.MaximumResponseHeadersLength = data.Length; mRequest.Method = "Post"; mRequest.ContentType = contentType; mRequest.ContentLength = data.Length; mRequest.Timeout = timeOut; //请求流 Stream requestStream = mRequest.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); //响应流 var mResponse = (HttpWebResponse)mRequest.GetResponse(); var responseStream = mResponse.GetResponseStream(); Encoding code = Encoding.GetEncoding(encode); if (responseStream != null) { var readStream = new StreamReader(responseStream, code); var read = new Char[256]; int count = readStream.Read(read, 0, 256); while (count > 0) { var str = new String(read, 0, count); result = result + str; count = readStream.Read(read, 0, 256); } responseStream.Close(); } } catch (Exception ex) { throw ex; } return result; } #endregion } }