给梦一个奔跑的方向!
PDF Print E-mail
User Rating: / 0
PoorBest 
Written by xlingfairy
Saturday, 06 February 2010 10:04
 试着用 ZendFramework 的 SOAP, 相同的代码,在我本地(windows apache)和服务器(linux, http://test.dajiaozi.com/phpinfo.php)上返回的WSDL却有一点出入:
 
<xsd:restriction base="soap-enc:Array">
<xsd:attribute ref="soap-enc:arrayType" wsdl:arrayType="tns:User[]"/>
</xsd:restriction>
 
在服务器上,产生的 wsdl 里, 没有 wsdl:arrayType="tns:User[]" 这个 attribute.
很是纳闷. 服务器上我放的是 ZendFramework mini 1.10 
 
跟踪排查了一下, 在 Zend\Soap\Wsdl\Strategy\ArrayOfTypeComplex.php 这个文件的大概113行:
 
$xsdAttribute->setAttribute("wsdl:arrayType", sprintf("tns:%s[]", $singularType));
 
把这个 wsdl:arrayType 换成其它的名字都能加进去,但是唯独这个 wsdl:arrayType 加不进去,返回的是 false.
 
但是又必须用 wsdl:arrayType 这个名字,怎么办呢?我换了一种写法:
$xsdAttribute->setAttributeNode(new DOMAttr('wsdl:arrayType',  sprintf("tns:%s[]", $singularType) ));
 
神奇的可以了!
 
Last Updated ( Saturday, 06 February 2010 10:10 )
 

Add comment


Security code
Refresh

Popular Contents

Recommend

Site Info

Members : 1
Content : 100
Web Links : 7
Content View Hits : 56172

Links