C#、Asp.net 使用 WebClient Get Post(同步、异步)

来源:互联网 发布:人体模型软件 编辑:程序博客网 时间:2024/06/06 00:47

一、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));        }    }}


 

0 0
原创粉丝点击