zoukankan      html  css  js  c++  java
  • 异步请求类HttpClient

    using System;
    using System.Net;
    using System.Windows;
    using System.IO;
    
    public class HttpClient
    {
        private WebRequest webRequest = null;
        public delegate void ResponseEventHandler(String responseResult);
        public event ResponseEventHandler onResponseEventHandler;
        public delegate void RequestEventHandler();
        public event RequestEventHandler onRequestEventHandler;
        public string PostData { get; set; }
    
        public HttpClient(Uri clientUri)
        {
            Uri endpoint = clientUri;
            webRequest = WebRequest.Create(endpoint);
            webRequest.ContentType = "application/x-www-form-urlencoded";
            webRequest.Method = "POST";
        }
    
        public void Post()
        {
            webRequest.BeginGetRequestStream(new AsyncCallback(RequestReady), webRequest);
        }
        private void RequestReady(IAsyncResult asyncResult)
        {
            if (this.onRequestEventHandler != null)
            {
                this.onRequestEventHandler();
            }
            WebRequest request = asyncResult.AsyncState as WebRequest;
            Stream requestStream = request.EndGetRequestStream(asyncResult);
    
            using (StreamWriter writer = new StreamWriter(requestStream))
            {
                writer.Write(this.PostData);
                writer.Flush();
                writer.Close();
            }
            webRequest.BeginGetResponse(new AsyncCallback(ResponseReady), webRequest);
        }
        private void ResponseReady(IAsyncResult asyncResult)
        {
            if (this.onResponseEventHandler != null)
            {
                WebRequest request = asyncResult.AsyncState as WebRequest;
                WebResponse response = request.EndGetResponse(asyncResult);
    
                using (Stream responseStream = response.GetResponseStream())
                {
                    String responseResult = String.Empty;
                    try
                    {
                        StreamReader reader = new StreamReader(responseStream);
                        responseResult = reader.ReadToEnd();
                    }
                    catch (WebException er)
                    {
                        responseResult = er.Message;
                    }
                    catch (Exception er)
                    {
                        responseResult = er.Message;
                    }
                    this.onResponseEventHandler(responseResult);
                }
            }
        }
    }
  • 相关阅读:
    Codeforces 722C. Destroying Array
    Codeforces 722D. Generating Sets
    【BZOJ】3436: 小K的农场
    数论四·扩展欧几里德
    数论三·约瑟夫问题
    数论二·Eular质数筛法
    #1287 : 数论一·Miller-Rabin质数测试
    树的维护
    可持久化线段树
    【NOIP2016】天天爱跑步
  • 原文地址:https://www.cnblogs.com/ncore/p/2799204.html
Copyright © 2011-2022 走看看