public AsyncHttpClient Cookies(AsyncCookieContainer cookies)
 {
     if (cookies != null)
     {
         _cookieContainerBuilder = CookieContainerBuilder.Create(cookies);
     }
     return(this);
 }
        private HttpClient DoBuildHttpClient()
        {
            var clientHandler = new HttpClientHandler();

            clientHandler.UseCookies = true;
            if (_cookieContainerBuilder != null)
            {
                //需要用到Uri来确定Domain,否则会出错~
                _cookieContainer        = _cookieContainerBuilder.Builder(_uri);
                _cookieContainerBuilder = null;//使用一次就不用了
            }
            if (_cookieContainer == null)
            {
                _cookieContainer = new CookieContainer();
            }
            clientHandler.CookieContainer = _cookieContainer;
            if (_automaticDecompression.HasValue)
            {
                clientHandler.AutomaticDecompression = _automaticDecompression.Value;
            }
            if (_allowAutoRedirect.HasValue)
            {
                clientHandler.AllowAutoRedirect = _allowAutoRedirect.Value;
            }

            var client = new HttpClient(clientHandler);

            if (_timeout.HasValue)
            {
                client.Timeout = _timeout.Value;
            }
            if (_expectContinue.HasValue)
            {
                client.DefaultRequestHeaders.ExpectContinue = _expectContinue.Value;
            }
            if (!string.IsNullOrEmpty(_contentType))
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(_contentType));
            }
            if (_headers != null)
            {
                foreach (var kv in _headers)
                {
                    client.DefaultRequestHeaders.Add(kv.Key, kv.Value);
                }
            }
            return(client);
        }
 //这里的参数表示示是否需要释放那些实现IDisposable接口的托管对象
 protected virtual void Dispose(bool disposing)
 {
     if (_disposed)
     {
         return; //如果已经被回收,就中断执行
     }
     if (disposing)
     {
         //TODO:释放那些实现IDisposable接口的托管对象
     }
     //释放非托管资源,设置对象为null
     _headers = null;
     _cookieContainerBuilder = null;
     _automaticDecompression = null;
     _uri      = null;
     _disposed = true;
 }
 public AsyncHttpClient Cookies(CookieContainer cookies)
 {
     _cookieContainerBuilder = CookieContainerBuilder.Create(cookies);
     return(this);
 }