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);
                }
            }
        }
    }
  • 相关阅读:
    ES6 import、export的写法
    不带分号可能会引起出错的情况
    npm传参技巧
    深度优先遍历和广度优先遍历
    WebGL的shader
    web component
    页面的beforeunload和unload的事件应用
    暴搜
    子集树与排列树
    概率论
  • 原文地址:https://www.cnblogs.com/ncore/p/2799204.html
Copyright © 2011-2022 走看看