【发布时间】:2012-01-03 10:36:35
【问题描述】:
我想使用 Zend_Soap_Client 调用 web 服务。这是相关代码:
$params = new stdClass();
$params->transactionId = $transactionId;
$params->transactionState = $transactionState;
$params->details = $transactionDetails;
var_dump($params->details);
try {
$this->_soapClient->updateTransaction($params);
}
问题在于details 参数,它是WSDL 中的复杂类型。 $transactionDetails 包含一个包含复杂类型(非空)元素的数组,这在 var_dump() 中可见。以前,我尝试使用将元素作为属性的 PHP 类。在这两种情况下,SOAP 客户端实际发送的是这样的:
<SOAP-ENV:Body>
<ns1:UpdateTransactionRequest>
<transactionId>45</transactionId>
<transactionState>SUCCESS</transactionState>
<details/>
</ns1:UpdateTransactionRequest>
</SOAP-ENV:Body>
我做错了什么?
更新:我认为问题的原因是为参数声明的 complexType 是基本类型,其中 WSDL 中存在几种扩展类型,我想使用其中一种扩展类型。我猜 Zend_Soap_Client 不能识别基本类型中不存在的任何元素,即所有元素。有没有办法解决这个问题?
【问题讨论】:
标签: php zend-framework soap