Подтвердить что ты не робот

Разница между HttpRequest, HttpWebRequest и WebRequest

Мне было интересно, если кто-нибудь объяснит разницу для перечисленных классов

4b9b3361

Ответ 1

Они делают разные вещи.

WebRequest является абстрактным базовым классом для HttpWebRequest - вы не можете использовать его напрямую. Это базовый класс других классов *Request (для FTP, файлов и других типов веб-запросов). Эти классы используются для получения ресурсов (файлов) из Интернета.

Существует также класс WebClient - возможно, самый простой в использовании всех классов BCL, предназначенных для извлечения ресурса из Интернета.

HttpRequest, с другой стороны представляет запрос ресурса в приложении ASP.NET - это серверная сторона Request.

Основное отличие состоит в том, что HttpWebRequest является HTTP-клиентом, а HttpRequest является серверной частью, которая будет использоваться в веб-приложении ASP.NET.

Ответ 2

HttpRequest, поскольку Oded уже сказал, это совершенно другая вещь - он генерирует HTTP-запросы на стороне сервера, чтобы клиенты (например, HttpWebRequest) могли читать он.

Теперь, между HttpWebRequest и WebRequest, в то время как один просто наследуется от другого, на практике там нет разницы, если вы используете http:// при создании запроса. Похоже, что это всего лишь дизайн кода.

Чтобы использовать WebRequest, нам нужно Create, которое вернет класс потомков. И пока мы используем его экземпляр, он будет действовать как оболочка класса потомков. Здесь примечание из документации:

WebRequest является абстрактным базовым классом для модели запроса/ответа .NET Framework для доступа к данным из Интернета. Приложение, использующее модель запроса/ответа, может запрашивать данные из Интернета с помощью агностического протокола, в котором приложение работает с экземплярами класса WebRequest, в то время как классы потомков, специфичные для протокола, выполняют детали запроса.

(...)

Поскольку класс WebRequest является абстрактным классом, фактическое поведение экземпляров WebRequest во время выполнения определяется классом потомков, возвращаемым методом Create. Дополнительные сведения о значениях по умолчанию и исключениях см. В документации для классов потомков, таких как HttpWebRequest и FileWebRequest.

Отказ

Я только узнал об этом сейчас, потому что, ища ответ (который я не знал 1 ч назад), я получил это от форумы на codeguru и Замечания MSDN doc, благодаря google:

Класс HttpWebRequest обеспечивает поддержку свойств и методов, определенных в WebRequest , а также для дополнительных свойств и методов, которые позволяют пользователю напрямую взаимодействовать с серверами с использованием HTTP.

И замечания продолжаются (выбираются только те, которые имеют некоторое отношение к разнице):

Не используйте конструктор HttpWebRequest. Используйте метод WebRequest.Create для инициализации новых объектов HttpWebRequest. Если схема для Uniform Resource Identifier (URI) - http://или https://, Create возвращает объект HttpWebRequest.

Метод GetResponse делает синхронный запрос ресурсу, указанному в свойстве RequestUri, и возвращает HttpWebResponse, который содержит ответ. Вы можете сделать асинхронный запрос к ресурсу с помощью методов BeginGetResponse и EndGetResponse.

HttpWebRequest предоставляет общие значения заголовков HTTP, отправленные на интернет-ресурс в качестве свойств, заданных с помощью методов или установленных системой;

Тогда там таблица там Я не буду здесь приводить.