I have following code:
$telnums = array(10, 20, 30);
$obj = new StdClass();
$obj->telnums = new StdClass();
foreach ($telnums as $telnum) {
$obj->telnums = $telnum;
}
call_user_func(array($this->client, 'createDomain'), new SoapVar($obj, SOAP_ENC_OBJECT));
There $this->client is an instance of SoapClient class.
And it generates following request:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="...">
<SOAP-ENV:Body>
<ns1:createDomain>
<createDomainRequest>
<telnums>30</telnums>
</createDomainRequest>
</ns1:createDomain>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
But I need
<createDomainRequest>
<telnums>10</telnums>
<telnums>20</telnums>
<telnums>30</telnums>
</createDomainRequest>
How I can achieve this?
P.S.: PHP 5.2.6-3ubuntu4.5 with Suhosin-Patch 0.9.6.2 (cli) (built: Jan 6 2010 22:25:33)
Thanks in advance!
I had landed into a similar scenario recently and I found this pattern usually does the trick.
$obj = new StdClass();
foreach ($telnums as $telnum) {
$obj->telnums[] = $telnum;
}
The reason this works is because it closely emulates the same data structure as prescribed by your WSDL
The correct answer should have been:
$options = array(
'createDomainRequest' => array(
'telnums' => array(
'10',
'20',
'30'
)
)
);
:)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With