为什么我的param p_oRSMasterFields不会出现在请求中?此请求是否从soap服务器发回,是否可能是服务器拒绝该特定参数的数据并将其清空?
$client = new SoapClient($wsdl, $options);
$client->UpdateCustMaster(array('p_iCompanyID' => 100,
'p_lAccountNum' => 18087,
'p_sSysUser' => 'WebTest',
'p_oRSMasterFields' => 'THIS IS A TEST',
'p_lErrorCode' => 0
));
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
REQUEST:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.acme.com/">
<SOAP-ENV:Body>
<ns1:UpdateCustMaster>
<ns1:p_iCompanyID>100</ns1:p_iCompanyID>
<ns1:p_lAccountNum>18087</ns1:p_lAccountNum>
<ns1:p_sSysUser>WebTest</ns1:p_sSysUser>
<ns1:p_oRSMasterFields/>
<ns1:p_lErrorCode>0</ns1:p_lErrorCode>
</ns1:UpdateCustMaster>
</SOAP-ENV:Body>
答案 0 :(得分:1)
您的WSDL就像该项目的那样:
<s:complexType>
<s:sequence>
<s:any namespace="acme.com/EnergyAPI/CustomerMaint/DSCustomerFields.xsd"/>
</s:sequence>
</s:complexType>
所以你需要在其中至少提供一个any
元素:
$client->UpdateCustMaster(array('p_iCompanyID' => 100,
'p_lAccountNum' => 18087,
'p_sSysUser' => 'WebTest',
'p_oRSMasterFields' => array('any' => 'THIS IS A TEST'),
################################
'p_lErrorCode' => 0
));
场景背后发生的是PHP SoapClient
类将您以数组形式传递的信息映射到WSDL中指定的类型。由于您的原始元素没有任何any
元素/成员,因此它是空的。