我正在尝试从我的网络应用程序调用 SOAP 服务。我创建了一个没有问题的肥皂客户端,但我在调用 SOAP 方法 GetCustomer 时遇到了问题。我收到以下 SOAP 错误
SOAP-ERROR: Encoding: object hasn't 'any' property.
我认为问题出在提供的参数上。参数是类型的ComplexType
,我不确定我是否直接从 PHP 传递它。这是来自 GetCustomer 方法的 WSDL:
<s:element name="GetCustomer">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="user" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="xmlParams">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
我发现这篇文章解决了这个问题,当我将它应用于我的代码时,我得到了上述错误。这是我的PHP代码:
$params = new StdClass();
$params->user = '****';
$params->password = '****';
$params->xmlParams = new StdClass();
$soap_options = array('trace' => 1, 'exceptions' => 1 );
$wsdl = "https://web-icdev.saop.si/iCenter_WS/SAOPWS_Customer.asmx?WSDL";
$client = new SoapClient($wsdl, $soap_options);
try {
$result = $client->GetCustomer($params);
var_dump($result);
}
catch (SOAPFault $f) {
echo $f->getMessage();
}