На каких протоколах может работать SOAP?

«На каких протоколах может работать SOAP?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SOAP — это протокол обмена сообщениями, который может работать поверх различных транспортных протоколов. Он не привязан к одному конкретному протоколу.

Основные транспортные протоколы для SOAP:

  • HTTP/HTTPS — наиболее распространенный вариант, особенно в веб-сервисах.
  • SMTP — для асинхронного обмена сообщениями по электронной почте.
  • TCP — для прямого сокет-соединения.
  • JMS — в Java-экосистеме для messaging.

Ключевые моменты:

  1. Формат сообщения всегда XML, независимо от транспорта.
  2. HTTP популярен из-за простоты, обхода фаерволов и интеграции с веб-инфраструктурой.
  3. HTTPS добавляет шифрование для безопасности.

Пример SOAP-запроса поверх HTTP:

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: text/xml; charset=utf-8
Content-Length: 150
SOAPAction: "http://example.org/GetStockPrice"

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <m:GetStockPrice xmlns:m="http://example.org/stock">
      <m:StockName>IBM</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
</soap:Envelope>