在使用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>
有人知道怎么做吗?谢谢