КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Интерфейс реализуется последовательно
Рассмотрим интерфейс взаимодействия программных приложений на примере HTTP. Первый этап - это когда HTTP-клиент (броузер) соединяется с сервером. Для этого он использует протокол TCP/IP, и соединение происходит с известным клиенту TCP-портом. Принятый номер порта HTTP - 80; для других сервисов определены другие TCP-порты. Вторым этапом является запрос клиента: клиент передает заголовок запроса (Request header) и, возможно (в зависимости от метода), тело сообщения запроса. В заголовке обязательно указываются метод, URL и версия HTTP. Там может быть еще несколько необязательных полей, которые тоже дают серверу информацию о том, как обрабатывать запрос. Третий этап - ответ сервера, который состоит из заголовка (Response header), в котором сервер указывает версию HTTP и код статуса, который может говорить об успешном или неуспешном результате и его причинах. После заголовка идет тело ответа, отделенное от заголовка пустой строкой. Четвертым этапом является разрыв TCP/IP соединения. Request header может выглядеть следующим образом:
GET /MyDoc.htm HTTP/1.1 Connection: Keep-Alive User-Agent: Mozilla/3.0 (Win95; I) Host: 212.54.196.226 Accept: image/gif, image/x-bitmap, image/jpeg, *.*
Request header, приведенный ниже, получен от документа, содержащего форму:
POST /Scripts/ReadData.pl HTTP/1.1 Referer: http://212.54.196.226 Connection: Keep Alive User-Agent: Mozilla/3.0 (Win95; I) Host: 212.54.196.226 Accept: image/gif, image/x-bitmap, image/jpeg, *.* Content-type: application/x-www-form-urlencoded Content-length: 38 FirstName=Mary+Ann&LastName=Sylvester
Здесь: POST - метод передачи данных из формы; Referer - адрес web-страницы, с которой пользователь перешел на документ, содержащий форму.; Content-type - способ кодировки передаваемых данных; Content-length - количество передаваемых данных (байт); FirstName, LastName - имена полей формы; Mary+Ann, Sylvester - передаваемые значения (пробел заменен знаком "+"). Типичный Response header содержит следующие данные: HTTP/1.1 200 OK Server: Microsoft-IIS/4.0 Date: Tue, 04 Apr 2005 00:26:34 GMT Content-type: text/html Set-Cookie: ASPSESSIONIDFFFYXKFR=ACMNFLJANKGBAMPBEGNGLEAB <HTML> { HTML - код }
Рассмотрим пример и разберём подробнее HTTP запрос клиента. Он может выглядеть например так:
POST http: //localhost/ HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Accept-Language: ru User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Host: localhost Proxy-Connection: Keep-Alive paraml=l¶m2=2
Из примера видно, что запрос начинается со слова "POST". Это слово означает метод передачи данных на сервер, в котором дополнительные данные запроса (строка "param1=1¶m2=2") передаются после заголовка. В HTML документах метод передачи данных указывается в форме отправки сообщений. Например, для того, чтобы получить этот запрос, была использована следующая форма: <form action="http://localhost/" method="post"> <input type=hidden name="param1" value="1"> <input type=hidden name="param2" value="2"> <input type=submit></form> Как видно из примера, параметры записываются в виде [имя параметра1]=[значения параметра1]&[имя параметра2]=[значения параметра2] &... Часто употребим метод запроса - "GET". Фактически все запросы, не требующие отправки данных - например запрос страницы, производятся этим способом. Изменим форму запроса: <form action="http://localhost/" method="get"> <input type=hidden name="param2" value="2"> <input type=submit></form> получим следующий HTTP запрос: GET http://localhost/?param1=1¶m2=2 HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */* Accept-Language: ru User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Host: localhost Proxy-Connection: Keep-Alive Как видно, строка "paraml=l¶m2=2" переместилась выше и добавилась к строке "http://localhost/" после знака"?". Так же изменилось первое слово в HTTP заголовке, остальное осталось без изменения. Достоинством метода GET является то, что в строке браузера видно, какие данные были отправлены. К недостаткам же относится то, что длина отправляемых данных таким способом (в отличие от метода POST) ограничена - некоторые серверы, как и некоторые браузеры, имеют лимит на длину адреса запрашиваемого документа. Соответственно адрес с длинной строкой запроса может быть либо срезан, либо сервер возвратит ошибку "414 Request-URI Too Long". Контрольные вопросы 1. Сколько этапов включает интерфейс взаимодействия приложений по НТТР? 2. Каков смысл заголовка Request header в интерфейсе взаимодействия приложений по НТТР? 3. Каков смысл заголовка Response header в интерфейсе взаимодействия приложений по НТТР? 4. Как компоненты, реализующие пользовательский интерфейс связаны с интерфейсом взаимодействия приложений по НТТР?
Лекция 17. Реализация интерфейса информационного взаимодействия программных приложений. Интерфейс взаимодействия сервера с внешней программой.
Дата добавления: 2014-11-29; Просмотров: 471; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |