Эта библиотека должна помочь в получении нужного RestClient по прокси. Сделана она по рекомендациям Microsoft. Случая когда она может пригодиться:
- Нужно связать библиотека несколько библиотек в одну
- Использование одного пуля соединения с прокси для доступа к сайтам
На это повлияло несколько причин, самые главные:
- Можно отключить cookie в
HttpClient, аRestClientв этот момент будет их парсить, тогда можно использовать одинRestClientдля работы с каждым запросом и они не будут друг другу мешать, например в одномCookieContainerбудет содержаться данные со всех запросов - Простота и быстрота написания кода
- Лёгкость использования
Пример выполнения обычного запроса требующего куки и прокси:
public static RestResponse Download(string url, IWebProxy? proxy, CookieContainer cookie, Method method)
{
var uri = new Uri(url);
var client = RestClientFactory.Factory.GetClient(proxy, uri);
var request = new RestRequest(uri, method)
{
CookieContainer = cookie
};
var response = client.Execute(request);
return response;
}
Это можно сделать через RestClientFactory.SetFuncConfigureClient, но нужно придерживаться некоторых рекомендаций:
- FollowRedirects нужно выключить и обрабатывать их самостоятельно, иначе может быть
loopобработки этих запросов - Если нужен один UserAgent для всех запросов, то нужно установить его в
RestClientOptions.UserAgent, иначе поставить тудаnullи в каждом запросе вставлять его черезRestRequest.AddHeader(KnownHeaders.UserAgent, UserAgent) - Установить прокси в
RestClientOptions.Proxyи вRestClientOptions.ConfigureMessageHandler => h.Proxyи поставитьRestClientOptions.ConfigureMessageHandler => h.UseProxy = true - Если не нужен один CookieContainer для всех запросов, то нужно поставить
RestClientOptions.CookieContainer = null,RestClientOptions.ConfigureMessageHandler => h.CookieContainer = new()и поставитьRestClientOptions.ConfigureMessageHandler => h.UseCookies = falseтогда куки можно будет установить для каждого запроса черезRestRequest.CookieContainer, а получить черезRestResponse.Cookies
Для работы нужны:
- RestSharp 110.2.0 - для обработки запросов
- System.Collections.Concurrent 4.3.0 - для потокобезопасной работы со списком всех
RestClient - .NET 7