Герберт Шилдт - C# 4.0: полное руководство
- Название:C# 4.0: полное руководство
- Автор:
- Жанр:
- Издательство:ООО И.Д. Вильямс
- Год:2011
- Город:Москва -- Киев
- ISBN:978-5-8459-1684-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Герберт Шилдт - C# 4.0: полное руководство краткое содержание
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию
C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
В классе WebResponse
инкапсулируется ответ, получаемый по запросу. Этот класс является абстрактным. В наследующих от него классах создаются отдельные его версии, поддерживающие конкретный протокол. Объект класса WebResponse
обычно получается в результате вызова метода GetResponse()
, определенного в классе WebRequest
. Этот объект будет экземпляром отдельного класса, производного от класса WebResponse
и реализующего конкретный протокол. Методы, определенные в классе WebResponse
, сведены в табл. 26.3, а свойства, объявляемые в этом классе, — в табл. 26.4. Значения этих свойств устанавливаются на основании каждого запроса в отдельности. Открытые конструкторы в классе WebResponse
не определяются.
Таблица 26.3. Наиболее часто используемые методы, определенные в классе WebResponse
Метод -Описание
public virtual void Close()
Закрывает ответный поток. Закрывает также поток ввода ответа, возвращаемый методом
GetResponseStream()
public virtual Stream GetResponseStream()
Возвращает поток ввода, связанный с запрашиваемым URI. Из этого потока могут быть введены данные из запрашиваемого URI
Таблица 26.3. Свойства, определенные в классе WebResponse
Свойство -Описание
public virtual long ContentLength { get; set; } -Получает или устанавливает длину принимаемого содержимого. Устанавливается равным -1, если данные о длине содержимого недоступны
public virtual string ContentType { get; set; } -Получает или устанавливает описание принимаемого содержимого
public virtual WebHeaderCollection Headers { get; } -Получает или устанавливает коллекцию заголовков, связанных с URI
public virtual bool IsFromCache { get; } -Принимает логическое значение true,если запрос получен из кэша. А если запрос доставлен по сети, то принимает логическое значение false
public virtual bool IsMutuallyAuthenticated { get; } -Принимает логическое значение true,если клиент и сервер опознают друг друга, а иначе — принимает логическое значение false
public virtual Uri - Получает URI, по которому был сформирован ответ.
ResponseUri { get; } -Этот идентификатор может отличаться от запрашиваемого, если ответ был переадресован по другому URI
Оба класса, HttpWebRequest
и HttpWebResponse
, наследуют от классов WebRequest
и WebResponse
и реализуют протокол HTTP. В ходе этого процесса в обоих классах вводится ряд дополнительных свойств, предоставляющих подробные сведения о транзакции по протоколу HTTP. О некоторых из этих свойств речь пойдет далее в настоящей главе. Но для выполнения простых операций в Интернете эти дополнительные свойства, как правило, не требуются.
Доступ к Интернету организуется на основе классов WebRequest
и WebResponse
. Поэтому, прежде чем рассматривать этот процесс более подробно, было бы полезно обратиться к прострму примеру, демонстрирующему порядок доступа к Интернету по принципу запроса и ответа. Глядя на то, как эти классы применяются на практике, легче понять, почему они организованы именно так, а не как-то иначе.
В приведенном ниже примере программы демонстрируется простая, но весьма типичная для Интернета операция получения гипертекстового содержимого из конкретного веб-сайта. В данном случае содержимое получается из веб-сайта издательства McGraw-Hill по адресу www.McGraw-Hill.com, но вместо него можно подставить адрес любого другого веб-сайта. В этой программе гипертекстовое содержимое выводится на экран монитора отдельными порциями по 400 символов, чтобы полученную информацию можно было просматривать, не прибегая к прокрутке экрана.
// Пример доступа к веб-сайту.
using System;
using System.Net;
using System.IO;
class NetDemo {
static void Main() {
int ch;
// Сначала создать объект запроса типа WebRequest по указанному URI.
HttpWebRequest req = (HttpWebRequest)
WebRequest.Create( http://www.McGraw-Hill.com);
// Затем отправить сформированный запрос и получить на него ответ.
HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
// Получить из ответа поток ввода.
Stream istrm = resp.GetResponseStream();
/* А теперь прочитать и отобразить гипертекстовое содержимое, полученное по указанному URI. Это содержимое выводится на экран отдельными порциями по 400 символов. После каждой такой порции следует нажать клавишу ,чтобы вывести на экран следующую порцию из 400 символов. */
for (int i = 1; ; i++) {
ch = istrm.ReadByte();
if (ch == -1) break;
Console.Write((char)ch);
if ((i % 400)== 0) {
Console.Write("\nНажмите клавишу .");
Console.ReadLine();
}
}
// Закрыть ответный поток. При этом закрывается также поток ввода istrm.
resp.Close();
}
}
Ниже приведена первая часть получаемого результата. (Разумеется, это содержимое может со временем измениться в связи с обновлением запрашиваемого веб-сайта, и поэтому у вас оно может оказаться несколько иным.)
Нажмите клавишу .
Итак, выше приведена часть гипертекстового содержимого, полученного из вебсайта издательства McGraw-Hill по адресу www.McGraw-Hill. com. В рассматриваемом здесь примере программы это содержимое просто выводится в исходном виде на экран посимвольно и не форматируется в удобочитаемом виде, как это обычно делается в окне браузера.
Проанализируем данную программу построчно. Прежде всего обратите внимание на использование в ней пространства имен System.Net
. Как пояснялось ранее, в этом пространстве имен находятся классы сетевого подключения к Интернету. Обратите также внимание на то, что в данную программу включено пространство имен System.IO
, которое требуется для того, чтобы прочитать полученную на веб-сайте информацию, используя объект типа Stream
.
В начале программы создается объект типа WebRequest
, содержащий требуемый URL Как видите, для этой цели используется метод Create()
, а не конструктор. Это статический член класса WebRequest
. Несмотря на то что класс WebRequest
является абстрактным, это обстоятельство не мешает вызывать статический метод данного класса. Метод Create()
возвращает объект типа HttpWebRequest
. Разумеется, его значение требуется привести к типу HttpWebRequest
, прежде чем присвоить его переменной req ссылки на объект типа HttpWebRequest
. На этом формирование запроса завершается, но его еще нужно отправить по указанному URL
Интервал:
Закладка: