PHP Soal Client,soapCall()方法节点属性,如何添加

时间:2018-11-29 10:56:29

标签: php soap structure

在使用PHP的SOAP客户端库编写SOAP请求时遇到问题。

这是我的代码:

    $xmlr = new \SimpleXMLElement("<CustomerSearch></CustomerSearch>");
    $xmlr->addChild('AuthorID', 'aaa');
    $xmlr->addChild('UserID', 2)->addAttribute('type', 'lol');
    $xmlr->addChild('UserPassword', 'dffds');
    $xmlr->addChild('Email', 'fdfd');

    $this->soapClient->__soapCall("OTA_HotelResNotifRQ", [ 'type' => 'lol', new \SoapVar($xmlr->asXML(), \XSD_ANYXML)] );

此代码生成的XML如下所示:

<SOAP-ENV:Body>
    <ns1:OTA_HotelResNotifRQ>
        <param0 xsi:type="xsd:string">lol</param0>
        <CustomerSearch>
            <AuthorID>aaa</AuthorID>
            <UserID type="lol">2</UserID>
            <UserPassword>dffds</UserPassword>
            <Email>fdfd</Email>
        </CustomerSearch>
    </ns1:OTA_HotelResNotifRQ>
</SOAP-ENV:Body>

这不是我要实现的目标。使用SimpleXMLElement,我可以达到所需的灵活性。但是,请求方法节点是使用SoapClient本身设计的。这是我遇到最多问题的部分,因为我不知道如何对其进行自定义。节点也需要属性,而我根本不知道如何添加它。最终请求应如下所示:

<SOAP-ENV:Body>
    <ns1:OTA_HotelResNotifRQ type="lol">
        <CustomerSearch>
            <AuthorID>aaa</AuthorID>
            <UserID type="lol">2</UserID>
            <UserPassword>dffds</UserPassword>
            <Email>fdfd</Email>
        </CustomerSearch>
    </ns1:OTA_HotelResNotifRQ>
</SOAP-ENV:Body>

有人知道怎么做吗?谢谢

0 个答案:

没有答案