Мне было интересно, если кто-нибудь объяснит разницу для перечисленных классов
Разница между HttpRequest, HttpWebRequest и WebRequest
Ответ 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, отправленные на интернет-ресурс в качестве свойств, заданных с помощью методов или установленных системой;
Тогда там таблица там Я не буду здесь приводить.