Различные движки веб-сервисов по-разному маршрутизируют входящие запросы в конкретные реализации веб-сервисов.
Вы сказали "веб-сервисы", но не указали использование SOAP. Я собираюсь предположить, что мыло.
Спецификация SOAP 1.1 говорит ...
Поле заголовка HTTP-запроса SOAPAction можно использовать для указания цели HTTP-запроса SOAP. Значением является URI, идентифицирующий намерение. SOAP не накладывает никаких ограничений на формат или специфику URI или на то, что он разрешим. HTTP-клиент ДОЛЖЕН использовать это поле заголовка при отправке SOAP HTTP-запроса.
Большинство механизмов веб-служб соответствуют спецификации и поэтому используют заголовок SOAPAction:
. Это очевидно работает только с SOAP-over-HTTP
передачами.
Когда HTTP не используется (скажем, TCP или какой-либо другой), ядро веб-служб должно к чему-то прибегнуть. Многие используют полезную нагрузку сообщения, в частности, имя элемента верхнего уровня во фрагменте XML внутри soap:envelope
. Например, движок может посмотреть это входящее сообщение:
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap:Body>
<m:GetAccountStatus xmlns:m="Some-URI">
<acctnum>178263</acctnum>
</m:GetAccountStatus>
</soap:Body>
</soap:Envelope>
... найдите элемент GetAccountStatus
, а затем направьте запрос на основе этого.