C#实现异步GET的方法
更新时间:2015年07月11日 10:36:01 作者:优雅先生
这篇文章主要介绍了C#实现异步GET的方法,涉及C#异步请求的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了C#实现异步GET的方法。分享给大家供大家参考。具体实现方法如下:
using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace WebClientAsynProject { public class Program { #region HttpWebRequest异步GET public static void AsyncGetWithWebRequest(string url) { var request = (HttpWebRequest) WebRequest.Create(new Uri(url)); request.BeginGetResponse(new AsyncCallback(ReadCallback), request); } private static void ReadCallback(IAsyncResult asynchronousResult) { var request = (HttpWebRequest) asynchronousResult.AsyncState; var response = (HttpWebResponse) request.EndGetResponse(asynchronousResult); using (var streamReader = new StreamReader(response.GetResponseStream())) { var resultString = streamReader.ReadToEnd(); Console.WriteLine(resultString); } } #endregion #region WebClient异步GET public static void AsyncGetWithWebClient(string url) { var webClient = new WebClient(); webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); webClient.DownloadStringAsync(new Uri(url)); } private static void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { //Console.WriteLine(e.Cancelled); Console.WriteLine(e.Error != null ? "WebClient异步GET发生错误!" : e.Result); } #endregion #region WebClient的OpenReadAsync测试 public static void TestGetWebResponseAsync(string url) { var webClient = new WebClient(); webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted); webClient.OpenReadAsync(new Uri(url)); } private static void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { if(e.Error == null) { var streamReader = new StreamReader(e.Result); var result = streamReader.ReadToEnd(); Console.WriteLine(result); } else { Console.WriteLine("执行WebClient的OpenReadAsync出错:" + e.Error); } } #endregion public static void Main(string[] args) { AsyncGetWithWebRequest("http://baidu.com"); Console.WriteLine("hello"); AsyncGetWithWebClient("http://baidu.com"); Console.WriteLine("world"); TestGetWebResponseAsync("http://baidu.com"); Console.WriteLine("jxqlovejava"); Console.Read(); } } }
希望本文所述对大家的C#程序设计有所帮助。
相关文章
AjaxControlToolkit AjaxFileUpload 显示英文改成中文的解决方法
AjaxControlToolkit AjaxFileUpload 显示英文改成中文的解决方法,需要的朋友可以参考一下2013-03-03C#中实现在32位、64位系统下自动切换不同的SQLite dll文件
这篇文章主要介绍了C#中实现在32位、64位系统下自动切换不同的SQLite dll文件,本文使用C#代码实现DLL文件的切换,需要的朋友可以参考下2014-09-09
最新评论