这篇文章主要介绍了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#程序设计有所帮助。
新闻热点
疑难解答