Работая сегодня над слегка связанной проблемой, я обнаружил, что следующий PHP создал запрос SOAP, показанный ниже:
$sc = new SoapClient($url);
$params = array('step' => 'ShippingInfo', 'value' => "hello");
$result = $sc->__soapCall('runStep', array('parameters' => $params));
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
<SOAP-ENV:Body>
<ns1:runStep>
<ns1:step>ShippingInfo</ns1:step>
<ns1:value>hello</ns1:value>
</ns1:runStep>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Я обнаружил, что если переданные мной параметры ($ params) не соответствуют указанным в файле WSDL, сообщение, сгенерированное клиентом SOAP, будет выглядеть так же, как вы жалуетесь - сообщение тело не содержит значения данных. Интересно, здесь ли твоя проблема?
Также обратите внимание на то, как в приведенном выше PHP используются два массива для передачи параметров. Первый массив содержит параметры и их имена. Второй содержит первый массив. Интересный синтаксис, я знаю. : -)
FYI, приведенный выше пример кода используется для связи со службой WCF C # .Net, имеющей следующий контракт:
[OperationContract]
string runStep(string step, string value);