.Net - загрузка нескольких страниц с веб-сайта с одним запросом DNS
-
01-10-2019 - |
Вопрос
Я использую HTTPREQUEST, чтобы загрузить несколько страниц с веб-сайта (в цикле). Упрощение это выглядит так:
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(
"http://sub.domain.com/something/" + someString
);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
//do something
Я не совсем уверен, но каждый запрос, похоже, решает адрес снова (я не знаю, как тестировать, если я прав). Я хотел бы увеличить его немного и решить адрес один раз, а затем повторно использовать его для всех запросов. Я не могу выработать, как заставить Httprequest использовать его, хотя.
Я попробовал использовать DNS.Geethostaddresses, преобразуя результат в строку и передаю его в качестве адреса к httpwebrequest.Create. К сожалению, сервер возвращает ошибку 404, затем. Мне удалось Google, вероятно, потому что заголовок «Host» HTTP-запроса не соответствует тому, что ожидает сервера.
Есть ли простой способ решить это?
Решение
Я сомневаюсь, что DNS не кэшируется уже честно, но есть способ сделать то, что вы спрашиваете.
После создания запроса с IP-адресом установите Хозяин Свойство на нем к DNS-имени. Это должно решить вашу 404 задачу.
То, что может помочь вам ускорить ваши несколько запросов, это установить Keepalive. Имущество правда. Это будет держать соединение открыть и позволить вам сделать несколько запросов без предварительного восстановления соединения каждый раз.
Другие советы
404 определенно из-за «заголовка хоста» сайта - тысячи сайтов могут быть размещены на одном IP-адресе, а веб-сервер использует домен для выяснения, какой вы хотите.
Ваш локальный компьютер должен быть кэшировать результаты запроса DNS, поэтому, хотя он будет генерировать запрос каждый раз, когда вы получаете доступ к домену, запрос даже не оставит ваш компьютер после первого, просто используя локально кэшированные результаты поиска.