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)); }
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); }