我需要根据WSDL返回SOAP调用答案。一切正常,除了返回xsd:any元素。 WSDL的一部分,我遇到了问题(这是出于疑问的答案)。
xsd:complexType name="data" xsd:sequence xsd:any minOccurs="1" maxOccurs="unbounded" xsd:sequence xsd:complexType
我尝试了什么:
foreach($data as $name=>$value) { $object->data->any[$name] = $value; } return $object;
SOAP调用返回如下答案:
..response> -data>value1value2value3value4-/data> .../response>
虽然在返回对象之前,可以看出,对象是按原样创建的:
$object->data->any[name1] = value1 $object->data->any[name2] = value2 etc...
但是在返回asnwer中,所有值都只是将一个字符串放入一个返回字段中。此代码和返回与任何其他字段类型(例如xsd:string等)正确一致。
如果是xsd:any类型,如何根据名称和值获取多个字段的答案?
由于
答案 0 :(得分:0)
解决了这个问题。
我必须为该字段创建SoapVar对象。
$o = new Object(); $o->field = $value; $object->data = new SoapVar($field, XSD_ANYTYPE); return $object;
由于
答案 1 :(得分:-1)
这也应该有效:
$object->data = new SoapVar($data, SOAP_ENC_OBJECT);