Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Связь HTTP GET и HTTP POST
Связь HTTP GET и HTTP POST
Хотя GET и POST кажутся привычными конструкциями, этот метод пересылки недостаточно гибок для обслуживания таких сложных элементов, как структуры и классы. При использовании SET и POST вы можете взаимодействовать с Web-методами, используя только типы, указанные в табл. 25.5.
Таблица 25.5. Типы данных, поддерживаемые методами GET и POST
Типы данных | Описание |
---|---|
Перечни | GET и POST поддерживают передачу типов System.Enum.NET, поскольку эти типы представляются в виде статических строковых констант |
Простые массивы | Вы можете использовать массивы любых примитивных типов |
Строки | GET и POST осуществляют передачу любых числовых данных в виде строковых маркеров. Строка здесь на самом деле обозначает строковое представление среды CLR для таких примитивов, как Int16, Int32, Int64, Boolean, Single, Double, Decimal и т.д. |
По умолчанию 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.