Я пытаюсь получить прокси для веб-запроса (HttpWebRequest или веб-клиент). В панели управления->Свойства обозревателя->Подключения->Настройки локальной сети вы увидите 3 варианта:
- Автоматически определять настройки
- Использовать сценарий автоматической настройки
- Используйте прокси-сервер для вашей локальной сети
Я хочу убедиться, что независимо от настроек мой веб-запрос использует тот же прокси-сервер, что и браузер.
Я использую приведенный ниже код для достижения этой цели; однако, когда 1. проверено, я пробую тот же URL-адрес в браузере и в своем коде, похоже, мой код работает намного медленнее. Я предполагаю, что способ, которым я получаю прокси в коде, может быть неэффективным или неуместным.
Могу ли я что-нибудь изменить в своем коде, чтобы отразить скорость браузера?
var client = (HttpWebRequest)WebRequest.Create(uriStr);
client.Headers["something"] = something;
client.Timeout = ConnectionTimeOut; //1 min
var proxyURI = WebRequest.GetSystemWebProxy().GetProxy(uri);
var proxy = new WebProxy(proxyURI, true)
{
Credentials = CredentialCache.DefaultNetworkCredentials
};
//if there is no proxy, proxy will return the same uri
//do we need check if client.Proxy is null or not,
if (proxyURI != null && !string.IsNullOrEmpty(proxyURI.AbsoluteUri) && !proxy.Address.Equals(uri))
{
client.Proxy = proxy;
}
1 ответ
Ваш подход в порядке.
Причиной разницы в скорости может быть то, что браузер мог либо кэшировать запрашиваемую вами страницу, либо кэшировать учетные данные прокси/прокси, и ему не нужно выполнять какую-либо новую сетевую выборку, поскольку вы выполняете это в своем коде.
Пробовали ли вы последующие запросы в своем приложении после получения прокси/учетных данных?
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.