Базовые технологии: SOAP, связывания HTTP, заголовок HTTP SOAPAction
Одной из целей проекта SOAP было создание открытой технологии, как с точки зрения платформы, так и с точки зрения языка программирования. Его архитекторы решили удовлетворить это требование, применяя существующие технологии, а не изобретая новые.
Для разработчика, использующего SOAP, это означает, что необходимо знать ряд технологий Web, прежде чем можно будет понять спецификацию. Кроме того, необходимо также знать предварительные требования: базовые объектно-ориентированные понятия и Java.
Давайте рассмотрим протокол, наиболее близкий к битам, которые перемещаются по линиям связи, — HTTP. Протокол передачи гипертекста используется для транспортировки практически любого трафика во Всемирной паутине. Он считается клиент-серверной моделью, т. е. клиент посылает на сервер запрос, который в свою очередь посылает ответ.
SOAP
SOAP задействует следующие свойства HTTP:
- заголовки HTTP;
- POST;
- возвращаемые коды HTTP.
Технология является однонаправленным протоколом, она не требует отправки обратного сообщения в качестве ответа на сообщение «запроса». Несмотря на то, что спецификация SOAP не определяет явно, как использовать ее с протоколом обмена сообщениями, таким как SMTP, создатели SOAP помнят об этом свойстве. Реализация Apache SOAP поддерживает SMTP в качестве транспорта.
SOAP не является протоколом RPC. SOAP обычно применяется для запуска вызова удаленной процедуры, но ничто в спецификации протокола не требует от сервера SOAP вызывать метод в результате получения сообщения. Очень часто технологию сравнивают с REST API о котором можете почитать тут https://itvdn.com/ru/blog/article/rest-api-18 но последний является гораздо более простым/легким решением.
Обобщенно говоря, SOAP сериализует вызов функции как структуру XML, содержащую:
- Имя метода.
- Необязательную сигнатуру метода.
- Список аргументов.
- Необязательный заголовок.
URL целевого объекта не является частью сериализованных данных — перенос URL осуществляет транспортный протокол.
Связывания HTTP
Хотя можно переносить полезную нагрузку SOAP с помощью нескольких HTTP-методов и даже с помощью протоколов, отличных от HTTP, спецификация 1.1 определяет связывания HTTP только для POST-запросов. Определение связываний SOAP влияет на три области HTTP:
- заголовок;
- ответ;
- рабочую среду расширений.
В любом POST методе HTTP-запрос является частью тела документа в противоположность методу GET, где запрос является частью URL.
Заголовок HTTP SOAPAction
Основное назначение поля заголовка HTTP SOAPAction состоит в предоставлении серверам способа быстро профильтровать SOAP-запросы.
Не слишком хорошей идеей является «заполнение» SOAPAction сложным URL, который будет сразу отвергнут или просто не понят брандмауэром, созданным для работы с простыми запросами. В частности, важно обеспечить, чтобы в SOAPAction не встречалось CRLF. Эти коды преждевременно завершат HTTP-заголовок и создадут странные ошибки относительно конечной части SOAPAction, которая не будет допустимым документом XML.