Как настроить soap заголовки в php - PullRequest
0 голосов
/ 28 марта 2020

У меня возникла эта проблема, когда я пытаюсь вызвать метод WCF из php. При отправке запроса отображается ошибка 500.

        $wsdl = "http://localhost:12019/XianglanCommuService/?wsdl";
        $soapClient = new SoapClient($wsdl, array('soap_version' => SOAP_1_2));
        try {
            return $soapClient->Test();
        } catch (SoapFault $fault) {
            return $fault->faultstring;
        }

Поэтому я попытался проверить ее XML с помощью Wireshark, XML выглядит следующим образом:

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://tempuri.org/">
    <env:Body>
        <ns1:Test/>
    </env:Body>
</env:Envelope>

Но штраф XML должен быть таким:

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://tempuri.org/">
    <env:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
        <wsa:Action>
            http://tempuri.org/IWCFService/Test
        </wsa:Action>
    </env:Header>
    <env:Body>
        <ns1:Test/>
    </env:Body>
</env:Envelope>

Итак, возникает вопрос: как настроить заголовок в phpsoap?

1 Ответ

0 голосов
/ 02 апреля 2020

В официальной документации много примеров.

$header = new SoapHeader('', 
                            'Action',
                            ' http://tempuri.org/IWCFService/Test');

$client->__setSoapHeaders($header);

$client->__soapCall("Test", null);

Результат.
enter image description here
Вот несколько полезных ссылок.
https://www.php.net/manual/en/class.soapheader.php
https://www.php.net/manual/en/soapclient.setsoapheaders.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...