Базовые технологии: SOAP, связывания HTTP, заголовок HTTP SOAPAction

Технология SOAPОдной из целей проекта 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 но последний является гораздо более простым/легким решением.

REST API и SOAP

Обобщенно говоря, 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.