예제 #1
0
 public LightHttpService(
     bool useCookie     = true,
     IWebProxyExt proxy = null,
     ILogger <LightHttpService> logger = null)
     : base(useCookie, proxy, logger)
 {
 }
예제 #2
0
 protected AbstractHttpClientService(
     bool useCookie,
     IWebProxyExt proxy = null,
     ILogger logger     = null)
     : base(useCookie, proxy, logger)
 {
 }
예제 #3
0
 public HttpClientService(
     IWebProxyExt proxy = null,
     bool useCookie     = true)
     : base(useCookie, proxy)
 {
     _handler = CreateDefaultHandler(proxy);
     SetHttpClient();
 }
예제 #4
0
 protected override void SetProxy(IWebProxyExt proxy)
 {
     base.SetProxy(proxy);
     if (_options != null)
     {
         _options.Proxy = _webProxy;
     }
 }
예제 #5
0
 public HttpClientService(
     HttpMessageHandler handler,
     bool useCookie,
     IWebProxyExt proxy = null,
     ILogger logger     = null)
     : base(useCookie, proxy, logger)
 {
     _handler = Check.NotNull(handler, nameof(handler));
     SetHttpClient();
 }
예제 #6
0
 public HttpClientExtService(
     IWebProxyExt proxy = null,
     bool useCookie     = true)
     : this(new HttpClientOptions {
     Proxy = proxy, UseCookie = useCookie
 },
            DefaultHttpClientFactory.Default,
            NullLogger <HttpClientExtService> .Instance)
 {
 }
        public async Task Test(IWebProxyExt proxy)
        {
            var service = new HttpClientService(proxy);
            var res     = await service.SendAsync(HttpReq.Get("https://www.google.com/"));

            if (res.HasError)
            {
                _output.WriteLine(res.Exception.ToString());
            }
            Assert.False(res.HasError);
        }
예제 #8
0
 protected AbstractHttpService(
     bool useCookie,
     IWebProxyExt proxy = null,
     ILogger logger     = null)
 {
     WebProxy = proxy;
     Logger   = logger ?? NullLogger.Instance;
     if (useCookie)
     {
         _cookieContainer = new CookieContainer();
     }
 }
예제 #9
0
        private static HttpWebRequest BuildRequest(HttpReq request, IWebProxyExt proxy, CookieContainer cc)
        {
            var req = (HttpWebRequest)WebRequest.Create(request.GetUrl());

            req.AllowAutoRedirect = false;
            req.ContentType       = request.ContentType;
            req.Method            = request.Method.ToString().ToUpper();
            req.Referer           = request.Referrer;
            req.Host      = request.Host;
            req.UserAgent = request.UserAgent;

            if (request.Timeout.HasValue)
            {
                req.Timeout = request.Timeout.Value;
            }

            if (proxy.Type != ProxyType.None)
            {
                req.Proxy = proxy;
            }
            else
            {
                req.Proxy = request.UseDefaultProxy ? WebRequest.DefaultWebProxy : null;
            }


            foreach (var header in request.HeaderMap.Where(h => !_notAddHeaderNames.Contains(h.Key)))
            {
                req.Headers.Add(header.Key, header.Value);
            }

            var cookies = request.HeaderMap.GetOrDefault(HttpConstants.Cookie)
                          ?? cc?.GetCookieHeader(req.RequestUri);

            if (!cookies.IsNullOrEmpty())
            {
                req.Headers.Add(HttpConstants.Cookie, cookies);
            }

            return(req);
        }
예제 #10
0
        private static HttpClientHandler CreateDefaultHandler(IWebProxyExt proxy = null)
        {
            var handler = new HttpClientHandler
            {
                AllowAutoRedirect       = false,
                UseCookies              = false,
                MaxConnectionsPerServer = 64,
                AutomaticDecompression  = DecompressionMethods.GZip | DecompressionMethods.Deflate
            };

            if (proxy != null)
            {
                handler.UseProxy = true;
                handler.Proxy    = proxy;
            }
            else
            {
                handler.UseProxy = false;
                handler.Proxy    = null;
            }
            return(handler);
        }
        protected static HttpMessageHandler Create(IWebProxyExt proxy)
        {
            switch (proxy.Type)
            {
            case ProxyType.None: return(CreateHttpClientHandler(null));

            case ProxyType.Http:
            case ProxyType.Https:
                return(CreateHttpClientHandler(proxy));

            case ProxyType.Socks5:
                return(new ProxyClientHandler <Socks5>(new ProxySettings
                {
                    Port = proxy.Port,
                    Host = proxy.Host,
                    Credentials = proxy.Credentials as NetworkCredential
                }));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
예제 #12
0
        protected override void SetProxy(IWebProxyExt proxy)
        {
            proxy = proxy ?? WebProxyExt.None;
            if (Equals(_webProxy, proxy))
            {
                return;
            }

            switch (proxy.Type)
            {
            case ProxyType.None:
            case ProxyType.Http:
            case ProxyType.Https:
            {
                _handler?.Dispose();
                _handler = CreateDefaultHandler(_webProxy);
                break;
            }

            case ProxyType.Socks5:
            {
                _handler?.Dispose();
                _handler = new ProxyClientHandler <Socks5>(new ProxySettings
                    {
                        Port        = proxy.Port,
                        Host        = proxy.Host,
                        Credentials = proxy.Credentials as NetworkCredential
                    });
                break;
            }

            default:
                throw new ArgumentOutOfRangeException(nameof(proxy.Type), proxy.Type, null);
            }
            _webProxy = proxy;
            _httpClient?.Dispose();
            SetHttpClient();
        }
 public DefaultHttpMessageHandlerBuilder(IWebProxyExt proxy)
 {
     Check.NotNull(proxy, nameof(proxy));
     PrimaryHandler = Create(proxy);
 }