/// <summary> /// 網絡數據請求公共函數 /// </summary> public class HttpWebRequestCommon { #region 根據HTTP協議請求接口,不攜帶參數 /// <summary> /// 根據HTTP協議請求接口,不攜帶參數 /// </summary> /// <param name="url">請求的第三方接口地址</param> /// <returns>接口返回的數據</returns> public static string HttpRequest(string url) { //string returnData = null; string ret = string.Empty; try { HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url); webReq.Method = "POST"; webReq.ContentType = "application/json"; Stream postData = webReq.GetRequestStream(); postData.Close(); HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(webResp.GetResponseStream(), Encoding.UTF8); ret = sr.ReadToEnd(); } catch (Exception ex) { //LogManager.LogInstance.WriteLog("時間:" + DateTime.Now + "/n 請求出錯原因" + ex.ToString()); } return ret; } #endregion #region 根據HTTP協議請求第三方接口數據,攜帶參數方式在地址后使用占位符拼接參數。傳遞格式請參照下個函數 /// <summary> /// 根據HTTP協議請求第三方接口數據,攜帶參數方式在地址后使用占位符拼接參數 /// </summary> /// <param name="PostUrl">請求的第三方地址</param> /// <param name="postData">在地址后拼接的參數集合,傳遞格式請參照調用示范</param> /// <returns>接口返回的數據格式</returns> public static string HttpRequestUrl(string PostUrl, byte[] postData) { HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(PostUrl); myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ContentLength = postData.Length; Stream newStream = myRequest.GetRequestStream(); // Send the data. newStream.Write(postData, 0, postData.Length); newStream.Flush(); newStream.Close(); string msg = string.Empty; HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); if (myResponse.StatusCode == HttpStatusCode.OK) { StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); msg = reader.ReadToEnd(); } return msg; } #endregion #region 根據HTTP協議請求第三方接口數據,攜帶參數方式在地址后使用占位符拼接參數。傳遞格式請參照下個函數 /// <summary> /// 根據HTTP協議請求第三方接口數據,攜帶參數方式在地址后使用占位符拼接參數 /// </summary> /// <param name="PostUrl">請求的第三方地址</param> /// <param name="postData">在地址后拼接的參數集合,傳遞格式請參照調用示范</param> /// <returns>接口返回的數據格式</returns> public static string HttpRequestUrl(string PostUrl, byte[] postData, string POSTisGET) { HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(PostUrl); myRequest.Method = POSTisGET; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ContentLength = postData.Length; Stream newStream = myRequest.GetRequestStream(); // Send the data. newStream.Write(postData, 0, postData.Length); newStream.Flush(); newStream.Close(); string msg = string.Empty; HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); if (myResponse.StatusCode == HttpStatusCode.OK) { StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); msg = reader.ReadToEnd(); } return msg; } #endregion #region 上面HttpRequestUrl函數的調用示范,url存請求地址。參數通過字符串占位符拼接 //string url = "https://api.weixin.qq.com/cgi-bin/token"; //string postStrTpl = "grant_type=client_credential&appid={0}&secret={1}"; //UTF8Encoding encoding = new UTF8Encoding(); //byte[] postData = encoding.GetBytes(string.Format(postStrTpl, "參數一", "參數二")); //string retString = HttpWebRequestCommon.RequestUrl(url, postData); #endregion #region 根據HTTP協議請求第三方接口,攜帶XML參數 /// <summary> /// 根據HTTP協議請求第三方接口,攜帶XML參數 /// </summary> /// <param name="url">請求地址</param> /// <param name="data">攜帶的XML數據</param> /// <returns>接口返回的數據</returns> public static string HttpRequestXml(string url, string data) { //string returnData = null; string ret = string.Empty; try { byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(data); HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url); webReq.Method = "POST"; webReq.ContentType = "application/x-www-form-urlencoded"; webReq.ContentLength = buffer.Length; Stream postData = webReq.GetRequestStream(); postData.Write(buffer, 0, buffer.Length); postData.Close(); HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(webResp.GetResponseStream(), Encoding.UTF8); ret = sr.ReadToEnd(); } catch (Exception ex) { //LogManager.LogInstance.WriteLog("時間:" + DateTime.Now + "/n 請求出錯原因" + ex.ToString()); } return ret; } #endregion #region 根據HTTP協議請求第三方接口,攜帶Json參數 /// <summary> /// 根據HTTP協議請求第三方接口,攜帶Json參數。 /// </summary> /// <param name="url">請求的第三方地址</param> /// <param name="content">Post提交數據內容(utf-8編碼的)</param> /// <returns>接口返回的數據</returns> public static string HttpRequestJson(string url, string content) { string result = ""; //ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true; //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/json"; #region 添加Post 參數 byte[] data = Encoding.UTF8.GetBytes(content); req.ContentLength = data.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } #endregion HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //獲取響應內容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); } return result; } #endregion }