I am trying to access to a soap interface with soapui. Everything works fine:
Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soc="www.example.com">
<soapenv:Header/>
<soapenv:Body>
<soc:getMailboxes>
<userId>512</userId>
</soc:getMailboxes>
</soapenv:Body>
</soapenv:Envelope>
Response:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<getMailboxesResponse xmlns="http://www.example.com">
<getMailboxesReturn>
<mailboxes>
<mailboxes>
<administratorNumbers/>
<administratorUsers>
<administratorUsers>512</administratorUsers>
</administratorUsers>
<allowsSuppressedNumbers>true</allowsSuppressedNumbers>
<deactivatedByAdmin>false</deactivatedByAdmin>
<deactivatedByUser>false</deactivatedByUser>
<mailNotificationActive>true</mailNotificationActive>
<name>speech box</name>
<notificationNumber xsi:nil="true"/>
<number>123123123</number>
<pin xsi:nil="true"/>
<recordConferenceCallActive>false</recordConferenceCallActive>
<sendSmsCount>0</sendSmsCount>
<sendSmsLimit>0</sendSmsLimit>
<smsNotificationActive>false</smsNotificationActive>
<tag xsi:nil="true"/>
<type>CLASSIC</type>
<voicemailEnabled>false</voicemailEnabled>
<whitelistedNumbers/>
</mailboxes>
</mailboxes>
<responseCode>
<ID>0</ID>
<name>OK</name>
</responseCode>
</getMailboxesReturn>
</getMailboxesResponse>
</soapenv:Body>
</soapenv:Envelope>
I tried this code to receive the same result:
$client = new SoapClient($soapURL,array('login' => "...",
'password' => "...",
'trace' => 1,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS));
$response = $client->getMailboxes(512);
echo var_dump(get_object_vars($response));
and I got this result:
array(2) {
["mailboxes"]=>
object(stdClass)#4 (0) {
}
["responseCode"]=>
object(stdClass)#5 (2) {
["ID"]=>
int(0)
["name"]=>
string(2) "OK"
}
}
I supposed a response with some values like in the soapui response (like object(stdClass)#5)? If I am sending a wrong userID, I get the right error message. Can anyone help me?
Update 1: The getMailboxes method creates this code:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.com">
<SOAP-ENV:Body>
<ns1:getMailboxes>
<userId>512</userId>
</ns1:getMailboxes>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Update 2:
if I use this code:
$response = $client->getMailboxes(["userId"=>512]);
I get this soap code. The userId should be 512, not 1.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="www.example.com">
<SOAP-ENV:Body>
<ns1:getMailboxes>
<userId>1</userId>
</ns1:getMailboxes>
</SOAP-ENV:Body></SOAP-ENV:Envelope>
I got the soap code with:
echo "REQUEST:
" . $client->__getLastRequest()
This call is incorrect:
$response = $client->getMailboxes(512);
Notice in your original XML, you are telling it what 512 means? Same goes for PHP, you have to identify the parameters that you send by using an associative array:
$response = $client->getMailboxes(["userId"=>"512"]);