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