Что такое сигнатура метода в заголовке SOAP? - PullRequest
1 голос
/ 26 мая 2010

Я хочу имитировать следующий 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);

Сервер выдает ошибку. Я думаю, что эта часть заголовка играет какую-то роль?

1 Ответ

2 голосов
/ 08 июня 2010

Попробуйте установить заголовок MethodSignature или __MethodSignature SOAP. С обычным PHP SOAP-клиентом вы делаете это следующим образом:

$client->__setSoapHeaders(new SoapHeader(
    'http://schemas.microsoft.com/clr/soap/messageProperties',
    '__MethodSignature',
    'xsd:string'
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...