0

我需要根据 WSDL 返回 SOAP 调用应答。一切正常,除了返回 xsd:any 元素。WSDL 的一部分,我遇到了问题(这是预期的答案)。

    xsd:complexType 名称="数据"
        xsd:序列
         xsd:any minOccurs="1" maxOccurs="unbounded"
        xsd:序列
    xsd:complexType

我尝试了什么:

    foreach($data as $name=>$value) {
        $object->data->any[$name] = $value;
    }
    返回$对象;

SOAP 调用返回如下答案:

    ..响应>
    -数据>值1值2值3值4-/数据>
    .../响应>

尽管在返回对象之前,可以看到对象已按应有的方式创建:

    $object->data->any[name1] = value1
    $object->data->any[name2] = value2

    ETC...

但是在 return asnwer 中,所有的值都只是放入一个字符串到一个返回字段中。此代码和返回适用于任何其他字段类型(例如 xsd:string 等)。

在 xsd:any 类型的情况下如何返回对象,以根据名称和值获得多个字段的答案?

谢谢

4

2 回答 2

0

解决了这个问题。

我必须为该字段创建 SoapVar 对象。

    $o = 新对象();
    $o->字段=$值;
    $object->data = new SoapVar($field, XSD_ANYTYPE);
    返回$对象;

谢谢

于 2012-12-17T13:06:15.537 回答
-1

这也应该有效:

$object->data = new SoapVar($data, SOAP_ENC_OBJECT);
于 2014-04-11T13:20:23.267 回答