C#、Asp.net 使用 WebClient Get Post(同步、非同步)
阿新 • • 發佈:2019-01-24
一、C#、Asp.net 下使用WebClient Get Post 同步 非同步請求,直接貼程式碼
1、通用Http類
using System; using System.Globalization; using System.Net; using System.Text; namespace Test { public class HttpCommon { /// <summary> /// Http同步Get同步請求 /// </summary> /// <param name="url">Url地址</param> /// <param name="encode">編碼(預設UTF8)</param> /// <returns></returns> public static string HttpGet(string url, Encoding encode = null) { string result; try { var webClient = new WebClient { Encoding = Encoding.UTF8 }; if (encode != null) webClient.Encoding = encode; result = webClient.DownloadString(url); } catch (Exception ex) { result = ex.Message; } return result; } /// <summary> /// Http同步Get非同步請求 /// </summary> /// <param name="url">Url地址</param> /// <param name="callBackDownStringCompleted">回撥事件</param> /// <param name="encode">編碼(預設UTF8)</param> public static void HttpGetAsync(string url, DownloadStringCompletedEventHandler callBackDownStringCompleted = null, Encoding encode = null) { var webClient = new WebClient { Encoding = Encoding.UTF8 }; if (encode != null) webClient.Encoding = encode; if (callBackDownStringCompleted != null) webClient.DownloadStringCompleted += callBackDownStringCompleted; webClient.DownloadStringAsync(new Uri(url)); } /// <summary> /// Http同步Post同步請求 /// </summary> /// <param name="url">Url地址</param> /// <param name="postStr">請求Url資料</param> /// <param name="encode">編碼(預設UTF8)</param> /// <returns></returns> public static string HttpPost(string url, string postStr = "", Encoding encode = null) { string result; try { var webClient = new WebClient { Encoding = Encoding.UTF8 }; if (encode != null) webClient.Encoding = encode; var sendData = Encoding.GetEncoding("GB2312").GetBytes(postStr); webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); webClient.Headers.Add("ContentLength", sendData.Length.ToString(CultureInfo.InvariantCulture)); var readData = webClient.UploadData(url, "POST", sendData); result = Encoding.GetEncoding("GB2312").GetString(readData); } catch (Exception ex) { result = ex.Message; } return result; } /// <summary> /// Http同步Post非同步請求 /// </summary> /// <param name="url">Url地址</param> /// <param name="postStr">請求Url資料</param> /// <param name="callBackUploadDataCompleted">回撥事件</param> /// <param name="encode"></param> public static void HttpPostAsync(string url, string postStr = "", UploadDataCompletedEventHandler callBackUploadDataCompleted = null, Encoding encode = null) { var webClient = new WebClient { Encoding = Encoding.UTF8 }; if (encode != null) webClient.Encoding = encode; var sendData = Encoding.GetEncoding("GB2312").GetBytes(postStr); webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); webClient.Headers.Add("ContentLength", sendData.Length.ToString(CultureInfo.InvariantCulture)); if (callBackUploadDataCompleted != null) webClient.UploadDataCompleted += callBackUploadDataCompleted; webClient.UploadDataAsync(new Uri(url), "POST", sendData); } } }
2、頁面請求類
using System; using System.Net; using System.Text; using System.Web.UI; namespace Test { public partial class WebForm3 : Page { protected void Page_Load(object sender, EventArgs e) { Response.Write(HttpCommon.HttpGet("http://localhost:14954/WebForm4.aspx")); //Get同步 HttpCommon.HttpGetAsync("http://localhost:14954/WebForm4.aspx"); //Get非同步 HttpCommon.HttpGetAsync("http://localhost:14954/WebForm4.aspx", DownStringCompleted); //Get非同步回撥 Response.Write(HttpCommon.HttpPost("http://localhost:14954/WebForm4.aspx", "post=POST")); //Post同步 HttpCommon.HttpPostAsync("http://localhost:14954/WebForm4.aspx", "post=POST"); //Post非同步 HttpCommon.HttpPostAsync("http://localhost:14954/WebForm4.aspx", "post=POST", UploadDataCompleted); //Post非同步回撥 } private void DownStringCompleted(object sender, DownloadStringCompletedEventArgs e) { Response.Write(e.Result); } private void UploadDataCompleted(object sender, UploadDataCompletedEventArgs e) { Response.Write(Encoding.GetEncoding("GB2312").GetString(e.Result)); } } }