Я хочу имитировать следующий SOAP-запрос, используя Zend Framework, но я не понимаю часть '__ MethodSignature' в заголовке. Может ли кто-нибудь объяснить это?
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header> <h3:__MethodSignature xsi:type="SOAP-ENC:methodSignature" xmlns:h3="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1"> xsd:string </h3:__MethodSignature> </SOAP-ENV:Header> <SOAP-ENV:Body> <i4:ReturnDataset id="ref-1" xmlns:i4="http://schemas.microsoft.com/clr/nsassem/Interface.IReturnDataSet/Interface"> <tName id="ref-5">BU</tName> </i4:ReturnDataset> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Когда я вызываю эту ReturnDataSet функцию, подобную этой:
$client = new Zend_Soap_Client($wsdl_url, array('soap_version' => SOAP_1_1)); $tName = "BU"; $result = $client->ReturnDataset($tName);
Сервер выдает ошибку. Я думаю, что эта часть заголовка играет какую-то роль?
Попробуйте установить заголовок MethodSignature или __MethodSignature SOAP. С обычным PHP SOAP-клиентом вы делаете это следующим образом:
$client->__setSoapHeaders(new SoapHeader( 'http://schemas.microsoft.com/clr/soap/messageProperties', '__MethodSignature', 'xsd:string' ));