Reputation: 1310
I'm trying to format a SOAP request with PHP. If I put the following request through with SOAPUI I get the correct results:
<urn:getCallInfoSearch>
<UserInfo>
<UserID>USERID</UserID>
<Password>PASS</Password>
<SvcrAcct>USERID</SvcrAcct>
</UserInfo>
<FromDateTime>12/10/2011 12:00:00</FromDateTime>
<ToDateTime>12/30/2011 12:00:00</ToDateTime>
</urn:getCallInfoSearch>
I'm trying to format it in PHP with SoapClient as follows:
$getCallInfoSearch = array(
'UserInfo' => array('UserId' => 'USERID', 'Password' => 'PASS', 'SvcrAcct' => 'USERID'),
'FromDateTime' => '12/10/2011 12:00:00',
'ToDateTime' => '12/30/2011 12:00:00',
);
$client->getCallInfo($getCallInfoSearch);
And I'm getting a response from the server that "UserID can not be null or blank". Is there any reason the array wouldn't translate exactly into the functional request from SoapUI?
The WSDL defines getCallInfoSearch as follows:
<complexType name="getCallInfoSearch">
<sequence>
<element name="UserInfo" nillable="true" type="impl:UserInfo"/>
<element name="FromDateTime" nillable="true" type="xsd:string"/>
<element name="ToDateTime" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
And UserInfo:
<complexType name="UserInfo">
<sequence>
<element name="UserID" nillable="true" type="xsd:string"/>
<element name="Password" nillable="true" type="xsd:string"/>
<element name="SvcrAcct" nillable="true" type="xsd:string"/>
</sequence>
</complexType>
Update, I've also tried to build the request with standard classes as follows, and I still get the same result:
$getCallInfoSearch = new stdclass();
$getCallInfoSearch->UserInfo = new stdclass();
$getCallInfoSearch->UserInfo->UserId = 'USERID';
$getCallInfoSearch->UserInfo->Password = 'PASS';
$getCallInfoSearch->UserInfo->SvcrAcct = 'USERID';
$getCallInfoSearch->FromDateTime = '12/10/2011 12:00:00';
$getCallInfoSearch->ToDateTime = '12/30/2011 12:00:00';
UPDATEx2: Either of these solutions works correctly (posted above). The issue all along has been case sensitivity. UserID vs UserId.
Upvotes: 1
Views: 665
Reputation: 7834
Just a guess, but "UserID"
!= "UserId"
:
Try this:
$getCallInfoSearch = array(
'UserInfo' => array('UserID' => 'USERID', 'Password' => 'PASS', 'SvcrAcct' => 'USERID'),
'FromDateTime' => '12/10/2011 12:00:00',
'ToDateTime' => '12/30/2011 12:00:00',
);
$client->getCallInfo($getCallInfoSearch);
Upvotes: 2