private void EndInvoke(AsynHttpContext _context, Exception e)
 {
     try
     {
         _watch.Stop();
         _context.ExecTime = _watch.ElapsedMilliseconds;
         _action.Invoke(_context, e);
     }
     catch (Exception ex)
     {
         //_logger.Error(ex, "EndInvoke exception.");
         _action.Invoke(null, ex);
     }
 }
        private void RequestCompleted(IAsyncResult asyncResult)
        {
            AsynHttpContext _context = asyncResult.AsyncState as AsynHttpContext;

            try
            {
                if (asyncResult == null)
                {
                    return;
                }
                _context.AsynResponse = (HttpWebResponse)_context.AsynRequest.EndGetResponse(asyncResult);
            }
            catch (WebException e)
            {
                //_logger.Error(e, "RequestCompleted WebException.");
                _context.AsynResponse = (HttpWebResponse)e.Response;
                if (_context.AsynResponse == null)
                {
                    EndInvoke(_context, e);
                    return;
                }
            }
            catch (Exception e)
            {
                //_logger.Error(e, "RequestCompleted exception.");
                EndInvoke(_context, e);
                return;
            }
            try
            {
                AsynStream stream = new AsynStream(_context.AsynResponse.GetResponseStream());
                stream.Offset = 0;
                long length = _context.AsynResponse.ContentLength;
                if (length < 0)
                {
                    length           = DEFAULT_LENGTH;
                    notContentLength = true;
                }
                buffer = new byte[length];
                stream.UnreadLength = buffer.Length;
                IAsyncResult asyncRead = stream.NetStream.BeginRead(buffer, 0, stream.UnreadLength, new AsyncCallback(ReadCallBack), stream);
            }
            catch (Exception e)
            {
                //_logger.Error(e, "BeginRead exception.");
                EndInvoke(_context, e);
            }
        }
        public static void Post(AsynHttpContext context, string reqStr, Action <AsynHttpContext, Exception> callBack)
        {
            AysncHttpRequestHelperV2 proxy = new AysncHttpRequestHelperV2(context, callBack);

            proxy.SendRequest(Encoding.UTF8.GetBytes(reqStr));
        }
        public static void Post(AsynHttpContext context, byte[] reqBytes, Action <AsynHttpContext, Exception> callBack)
        {
            AysncHttpRequestHelperV2 proxy = new AysncHttpRequestHelperV2(context, callBack);

            proxy.SendRequest(reqBytes);
        }
        public static void Get(AsynHttpContext context, Action <AsynHttpContext, Exception> callBack)
        {
            AysncHttpRequestHelperV2 proxy = new AysncHttpRequestHelperV2(context, callBack);

            proxy.SendRequest();
        }
 private AysncHttpRequestHelperV2(AsynHttpContext context, Action <AsynHttpContext, Exception> callBack)
 {
     this._context = context;
     this._action  = callBack;
     this._watch   = new Stopwatch();
 }