Документация / WSDL
Привязка SOAP
Привязка SOAP описывает, как операции интерфейса передаются в сообщениях SOAP 1.1 (пространство имён
http://schemas.xmlsoap.org/wsdl/soap/, префикс soap). Для SOAP 1.2 есть аналогичная привязка с пространством
имён http://schemas.xmlsoap.org/wsdl/soap12/.
soap:binding
<wsdl:binding name="OrdersSoapBinding" type="tns:OrdersPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
...
</wsdl:binding>
| Атрибут | Значение |
|---|---|
transport | Транспорт. http://schemas.xmlsoap.org/soap/http — SOAP поверх HTTP |
style | Стиль по умолчанию для операций: document или rpc |
soap:operation
soap:operation задаёт для операции:
soapAction— значение HTTP-заголовкаSOAPActionв запросе (для SOAP 1.1 заголовок обязателен, значение может быть пустым);style— переопределяет стиль привязки для этой операции.
Стили document и rpc
- document — тело SOAP содержит XML-документы, описанные в схеме: части сообщения ссылаются на элементы
(
element), и тело — это ровно эти элементы. - rpc — тело SOAP — вызов процедуры: элемент с именем операции, внутри — элементы-параметры по именам частей
(части ссылаются на типы через
type).
soap:body: literal и encoded
soap:body внутри input/output операции описывает содержимое тела:
| Атрибут | Значение |
|---|---|
use | literal — тело точно соответствует схеме; encoded — данные закодированы по правилам SOAP Encoding |
parts | Какие части сообщения попадают в тело (по умолчанию — все) |
namespace | Пространство имён элемента-обёртки (для стиля rpc) |
encodingStyle | Правила кодирования (для encoded) |
Сочетание document/literal — стандарт де-факто: его требует профиль совместимости WS-I Basic Profile. Вариант rpc/literal тоже допустим. Вариант encoded считается устаревшим и несовместимым со многими современными инструментами.
soap:header
soap:header выносит часть сообщения в заголовок SOAP — так передают токены авторизации, идентификаторы
трассировки, параметры транзакции.
<wsdl:operation name="CreateOrder">
<soap:operation soapAction="http://example.com/orders/CreateOrder"/>
<wsdl:input>
<soap:header message="tns:AuthHeader" part="token" use="literal"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ValidationFault">
<soap:fault name="ValidationFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
soap:fault
soap:fault описывает, как ошибка из portType передаётся в элементе detail ответа SOAP Fault. Имя в soap:fault
совпадает с именем wsdl:fault операции.
soap:address
soap:address location="…" внутри wsdl:port задаёт адрес конечной точки сервиса.
Пример сервиса заказов
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="OrdersService"
targetNamespace="http://example.com/orders"
xmlns:tns="http://example.com/orders"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xs:schema targetNamespace="http://example.com/orders" elementFormDefault="qualified">
<xs:element name="Token" type="xs:string"/>
<xs:element name="CreateOrder">
<xs:complexType>
<xs:sequence>
<xs:element name="customerId" type="xs:string"/>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="sku" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CreateOrderResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="orderNumber" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ValidationError">
<xs:complexType>
<xs:sequence>
<xs:element name="code" type="xs:string"/>
<xs:element name="message" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="CreateOrderRequest">
<wsdl:part name="parameters" element="tns:CreateOrder"/>
</wsdl:message>
<wsdl:message name="CreateOrderResponse">
<wsdl:part name="parameters" element="tns:CreateOrderResponse"/>
</wsdl:message>
<wsdl:message name="AuthHeader">
<wsdl:part name="token" element="tns:Token"/>
</wsdl:message>
<wsdl:message name="ValidationFault">
<wsdl:part name="fault" element="tns:ValidationError"/>
</wsdl:message>
<wsdl:portType name="OrdersPortType">
<wsdl:operation name="CreateOrder">
<wsdl:input message="tns:CreateOrderRequest"/>
<wsdl:output message="tns:CreateOrderResponse"/>
<wsdl:fault name="ValidationFault" message="tns:ValidationFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="OrdersSoapBinding" type="tns:OrdersPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="CreateOrder">
<soap:operation soapAction="http://example.com/orders/CreateOrder"/>
<wsdl:input>
<soap:header message="tns:AuthHeader" part="token" use="literal"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ValidationFault">
<soap:fault name="ValidationFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="OrdersService">
<wsdl:port name="OrdersPort" binding="tns:OrdersSoapBinding">
<soap:address location="https://api.example.com/orders"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Похожие инструменты
Обновлено: 30 сентября 2026 г.
