我正在尝试使用PHP格式化SOAP请求。如果我通过SOAPUI提出以下请求,我会得到正确的结果:
<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>
我尝试使用SoapClient在PHP中格式化它,如下所示:
$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);
我从服务器得到的回复是&#34; UserID不能为空或空白&#34;。阵列是否有任何理由不能完全转换为SoapUI的功能请求?
WSDL定义了getCallInfoSearch,如下所示:
<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>
用户信息:
<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>
更新,我还尝试使用标准类构建请求,如下所示,我仍然得到相同的结果:
$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:这些解决方案中的任何一个都能正常工作(上面发布)。这个问题始终是区分大小写的。 UserID与UserId。
答案 0 :(得分:2)
只是一个猜测,但是"UserID"
!= "UserId"
:
试试这个:
$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);