Esempio n. 1
0
        public HttpClientPoolWrapper GetClient(string url)
        {
            var uri   = new Uri(url);
            var queue = GetQueue(uri.Host);

            if (queue.IsEmpty ||
                !queue.TryDequeue(out var client))
            {
                var handler = new CustomHttpClientHandler {
                    UseCookies = true
                };
                client = new HttpClient(handler);

                foreach (var cookie in CookieContainer.GetCookies(uri.Host))
                {
                    handler.CookieContainer.Add(uri, cookie);
                }

                CookieContainer.OnCookieAdded += (obj, cc) =>
                {
                    handler?.CookieContainer?.Add(new Uri($"https://{cc.Domain}"), cc);
                    handler?.CookieContainer?.Add(new Uri($"http://{cc.Domain}"), cc);
                };
                Console.WriteLine($"Http Pool: Generated a new instance of httpclient");
            }

            return(new __HttpClientPoolWrapper(client, uri, this));
        }
Esempio n. 2
0
        public async Task <string> DoStuff(string url)
        {
            var uri     = new Uri(url);
            var handler = new CustomHttpClientHandler {
                UseCookies = true
            };
            var client = new HttpClient(handler);

            foreach (var cookie in Credentials.GetCookies(uri.Host))
            {
                handler.CookieContainer.Add(uri, cookie);
            }

            var result = await client.GetAsync(url);

            var res = await result.Content.ReadAsStringAsync();

            Debugger.Break();
            return(res);
        }