• 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();
        }
      }
    }
  • 相关阅读:
    MongoDB一次节点宕机引发的思考(源码剖析)【华为云分享】
    JavaScript基础修炼(14)——WebRTC在浏览器中如何获得指定格式的PCM数据【华为云分享】
    如何通过虚拟私有云保障服务安全【华为云分享】
    网络服务家族图谱:一张图带您了解华为云网络服务大家族!【华为云分享】
    化鲲为鹏,我有话说:鲲鹏服务器开通流程以及注意事项【华为云分享】
    hadoop小知识札记
    抽取网页中的主要内容
    Hadoop Bloom Filter 使用
    Bloom filter 2
    Bloom Filter
  • 原文地址:https://www.cnblogs.com/dj1232090/p/7631378.html
Copyright © 2020-2023  润新知