Прерывание запроса с использованием класса HttpClient

  • На форуме работает ручное одобрение пользователей. Это значит, что, если Ваша причина регистрации не соответствует тематике форума, а также Вы используете временную почту, Ваша учётная запись будет отклонена без возможности повторной регистрации. В дальнейшем - пожизненная блокировка обоих аккаунтов за создание мультиаккаунта.
  • Мы обновили Tor зеркало до v3!
    Для входа используйте следующий url: darkv3nw2...bzad.onion/
  • Мы вновь вернули telegram чат форуму, вступайте, общайтесь, задавайте любые вопросы как администрации, так и пользователям!
    Ссылка: https://t.me/chat_dark_time

Zer0neX

Участник

Zer0neX

Участник
19 Янв 2017
32
11
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Требуется выполнить следующее задание:
Требуется выполнить запрос на сайт через прокси-сервер.Если в течение 5000 миллисекунд не будет получен ответ, то моментально прервать соединение и вызвать метод MT()
Имеется следующий код:

private async void GetPageSource(Proxy proxy)
{
ProxyClient socksProxy = null;

switch (proxy.Type)
{
case Enums.ProxyType.HTTP:
socksProxy = new HttpProxyClient(proxy.IP, proxy.PORT); break;
case Enums.ProxyType.SOCKS4:
socksProxy = new Socks4ProxyClient(proxy.IP, proxy.PORT); break;
case Enums.ProxyType.SOCKS5:
socksProxy = new Socks5ProxyClient(proxy.IP, proxy.PORT); break;
}
ProxyHandler handler = new ProxyHandler(socksProxy);
HttpClient client = new HttpClient(handler);
client.Timeout = new TimeSpan(0, 0, 0, 0, 5000);
client.DefaultRequestHeaders.TryAddWithoutValidation(@"user-agent", @"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.664 Chrome/52.0.2743.82 Safari/537.36");
client.DefaultRequestHeaders.TryAddWithoutValidation("id", "f215zg36b214uja");
client.DefaultRequestHeaders.TryAddWithoutValidation("dxn", "1");
client.DefaultRequestHeaders.TryAddWithoutValidation("dnt", "1");
string content = null;
Stopwatch SW = new Stopwatch();
try
{
SW.Start();
content = await client.GetStringAsync("
Пожалуйста, Вход или Регистрация для просмотра содержимого URL-адресов!
");
}
catch (OperationCanceledException Ex)
{
Console.WriteLine(Ex.Message);
}
SW.Stop();
LogWrite(new string('#', 25));
LogWrite(content);
LogWrite(new string('#', 25));
LogWrite("Elapsed time: " + SW.ElapsedMilliseconds);
Console.WriteLine("Done!");
}

Задача отменяется, но завершение происходит слишком долго. Как же решить эту задачу?
Буду вам чрезвычайно благодарен за скорейшее решение вопроса.
 

Decode

Заблокирован

Decode

Заблокирован
10 Ноя 2016
54
35
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
private async void GetPageSource(Proxy proxy)
{
ProxyClient socksProxy = null;

switch (proxy.Type)
{
case Enums.ProxyType.HTTP:
socksProxy = new HttpProxyClient(proxy.IP, proxy.PORT); break;
case Enums.ProxyType.SOCKS4:
socksProxy = new Socks4ProxyClient(proxy.IP, proxy.PORT); break;
case Enums.ProxyType.SOCKS5:
socksProxy = new Socks5ProxyClient(proxy.IP, proxy.PORT); break;
}
ProxyHandler handler = new ProxyHandler(socksProxy);
HttpClient client = new HttpClient(handler);
client.ConnectTimeout(5000);
client.Timeout = new TimeSpan(0, 0, 0, 0, 5000);
client.DefaultRequestHeaders.TryAddWithoutValidation(@"user-agent", @"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/52.15.25.664 Chrome/52.0.2743.82 Safari/537.36");
client.DefaultRequestHeaders.TryAddWithoutValidation("id", "f215zg36b214uja");
client.DefaultRequestHeaders.TryAddWithoutValidation("dxn", "1");
client.DefaultRequestHeaders.TryAddWithoutValidation("dnt", "1");
string content = null;
Stopwatch SW = new Stopwatch();
try
{
SW.Start();
content = await try
{
client.GetStringAsync("http://*******.***/******/***");
} catch
{
MT();
}
}
catch (OperationCanceledException Ex)
{
Console.WriteLine(Ex.Message);
}
SW.Stop();
LogWrite(new string('#', 25));
LogWrite(content);
LogWrite(new string('#', 25));
LogWrite("Elapsed time: " + SW.ElapsedMilliseconds);
Console.WriteLine("Done!");
}
з.ы. писал от руки
 

K_NoW

VIP

K_NoW

VIP
3 Июн 2016
514
195
Первое что приходит в голову, создай второй поток и в нем сам считай время, если таймаут прошел делай разрыв
 
  • Лайк
Reactions: Decode

О нас

  • Наше сообщество существует уже много лет и гордится тем, что предлагает непредвзятое, критическое обсуждение различных тем среди людей разных слоев общества. Мы работаем каждый день, чтобы убедиться, что наше сообщество является одним из лучших.

    Dark-Time 2015 - 2022

    При поддержке: XenForo.Info

Быстрая навигация

Меню пользователя