Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 696
Эндрю Троелсен
Связь HTTP GET и HTTP POST
Хотя GET и POST кажутся привычными конструкциями, этот метод пересылки недостаточно гибок для обслуживания таких сложных элементов, как структуры и классы. При использовании SET и POST вы можете взаимодействовать с Web-методами, используя только типы, указанные в табл. 25.5.
Таблица 25.5. Типы данных, поддерживаемые методами GET и POST
Типы данных | Описание |
---|---|
Перечни | GET и POST поддерживают передачу типов System.Enum.NET, поскольку эти типы представляются в виде статических строковых констант |
Простые массивы | Вы можете использовать массивы любых примитивных типов |
Строки | GET и POST осуществляют передачу любых числовых данных в виде строковых маркеров. |
По умолчанию HTTP-связь GET и POST не разрешена для удаленного вызова Web-сервисов XML. Однако HTTP-связь POST активизирована для вызова машиной локальных Web-сервисов (на самом деле именно этот режим использует автоматически генерируемая страница тестирования). Эти установки указываются в файле machine.config с помощью элемента ‹protocols›. Вот как выглядит соответствующий фрагмент
‹!-- В файле machine. config --›
‹webServices
‹protocols›
‹add name="HttpSoap1.2" /›
‹add name="HttpSoap"
‹add name="Documentation" /›
‹!-- HTTP GET/POST отключены! --›
‹!-- ‹add name="HttpPost''/› --›
‹!-- ‹add name="HttpGet"/› --›
‹!-- Используется страницей тестирования Web-сервиса --›
‹add name="HttpPostLocalhost" /›
‹/protocols›
‹/webServiсes›
Чтобы снова разрешить использование HTTP-методов GET или POST для Web-сервиса, добавьте имена HttpPost и HttpGet в соответствующий локальный файл Web.config.
‹configuration›
‹system.web›
‹webServices›
‹protocols›
‹add name="HttpPost"/›
‹add name="HttpGet"/›
‹/protocols›
‹/webServices›
‹/system.web›
‹/configuration›
Снова напоминаем, что при использовании стандартных HTTP-методов GET и POST у вас нет возможности строить Web-методы, допускающие использование составных типов (например, DataSet ADO.NET или пользовательский тип структуры) в качестве параметров или возвращаемых значений. Для простых Web-сервисов это ограничение может быть вполне приемлемым. Однако при использовании связи SOAP вы можете строить гораздо более совершенные Web-сервисы XML.
Связь SOAP
Полный анализ возможностей SOAP выходит за рамки этого текста, однако следует понимать, что SOAP нельзя назвать специальным протоколом, который может использоваться наряду с другими существующими протоколами Интернет (HTTP, SMTP и др.). Общая задача SOAP, тем не менее, остается той же: обеспечить независимый от языка и платформы механизм вызова методов, использующих составные типы. Для этого SOAP преобразует каждый метод в сообщение SOAP.