AgilityPack - поддержание «соединения» для нескольких HTTP-запросов - PullRequest
2 голосов
/ 13 марта 2019

У меня есть система, которая должна сделать несколько вызовов API как единую «работу».Я подключаюсь к прокси-серверу через имя хоста, чтобы выполнить работу, чтобы он не назначал мне IP-адрес, который я вижу.По сути, я сдаю задачу.

В настоящее время я использую HtmlWeb для вызова моего списка URL-адресов примерно так:

var webProxy = new WebProxy(Address: [MyProxyHost]);

var web = new HtmlWeb();
web.UseCookies = false;
web.UserAgent = "[MyUserAgent]";
var htmlDoc = web.Load("[URL]","GET", webProxy, webCreds);
//...do stuff with results...

Проблема: как есть, каждый запросЯ делаю, будет вращать прокси-сервер (так как каждый «вызов» с использованием прокси-хоста случайным образом меняет IP-адрес своей стороны - я не контролирую это).

Что я хочу сделать, это повторно использовать HTTP-запрос / соединение для нескольких вызовов (я ценю, что, вероятно, я не смогу использовать HtmlWeb для этого).

ТакПо сути, я бы сказал:

  • Создать объект HTTP-запроса (с прокси-сервером)
  • Открыть / инициализировать
  • Сделать запрос 1
  • ...
  • Сделать запрос N
  • Закрыть и удалить

Возможно ли это?

1 Ответ

0 голосов
/ 13 марта 2019

Хорошо, у меня есть следующее и пока вроде бы все в порядке:

var webProxy = new WebProxy()
{
    Address = new Uri([ServerHost] + ":" + [ServerPort]),
    BypassProxyOnLocal = false,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(
        userName: [Username],
        password: [Password])
};

var httpClientHandler = new HttpClientHandler()
{
    Proxy = webProxy,
};

var _httpClient = new HttpClient(httpClientHandler);
...
var response = await _httpClient.GetAsync([Url]);
var pageContents = await response.Content.ReadAsStringAsync();

var htmlDoc.LoadHtml(pageContents);
...

Это делает запрос на каждый URL-адрес с использованием прокси-сервера и преобразует возвращаемую страницу в HtmlDocument, чтобы я мог выполнять необходимые действия с AgilityPack.

...