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);
                }
            }
        }
    }
  • 相关阅读:
    ROW_NUMBER()用法(转)
    winform MD5值生成
    VC使用“添加方法向导”添加调度映射方法“
    MyGeneration配置说明
    dataGridView取消自动生成列
    PHP魔术常量(magic constant)
    Eclipse添加DTD文件实现xml的自动提示功能
    Google:5个常见的SEO错误和6个SEO好主意
    PHP检查PEAR是否工作
    手把手教你在ubuntu上安装LAMP
  • 原文地址:https://www.cnblogs.com/ncore/p/2799204.html
Copyright © 2011-2022 走看看