這篇文章主要介紹了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#程序設計有所幫助。
新聞熱點
疑難解答