nusoap传递数组对象
由于工作原因 用PHP调用WEB SERVICE,使用Nusoap包进行操作。
由于对方提供的一个方法中,需要传递数组对象作为参数。我实验了近百次,发现nusoap不支持二维数组对象,也不支持二维数组。基本上就是需要下面这种格式的数据作为参数。
Array(
key0=>value
key1=>Array(
key=>Array(k0=>v),
key=>Array(k1=>v))
)
发现nusoap无法解析此参数。就读了下nusoap_client.PHP源文件。
在6286行,增加如下代码便可
if( $eName == 'key' ){
foreach( $xvalue AS $eName=>$xv ) {
$v = $xv;
$xml .= $this->serializeType(trim($eName), isset($attrs['type']) ? $attrs['type'] : $attrs['ref'], $v, $use, $encodingStyle, false);
}
continue;
}
将key替换为你所需要的key就可以了。
总结:数组的key是不可以重复的,而xml是允许且其本质就是需要节点重复的。
由于工作原因 用PHP调用WEB SERVICE,使用Nusoap包进行操作。
由于对方提供的一个方法中,需要传递数组对象作为参数。我实验了近百次,发现nusoap不支持二维数组对象,也不支持二维数组。基本上就是需要下面这种格式的数据作为参数。
Array(
key0=>value
key1=>Array(
key=>Array(k0=>v),
key=>Array(k1=>v))
)
发现nusoap无法解析此参数。就读了下nusoap_client.PHP源文件。
在6286行,增加如下代码便可
if( $eName == 'key' ){
foreach( $xvalue AS $eName=>$xv ) {
$v = $xv;
$xml .= $this->serializeType(trim($eName), isset($attrs['type']) ? $attrs['type'] : $attrs['ref'], $v, $use, $encodingStyle, false);
}
continue;
}
将key替换为你所需要的key就可以了。
总结:数组的key是不可以重复的,而xml是允许且其本质就是需要节点重复的。
本文转自许琴 51CTO博客,原文链接:http://blog.51cto.com/xuqin/925196,如需转载请自行联系原作者