2012-12-12 75 views
0

我需要根據WSDL返回SOAP調用回答。一切工作正常,除了返回xsd:any元素。作爲WSDL的一部分,我遇到了問題(這是針對意想不到的答案)。SOAP:返回一個xsd數組:PHP中的任何元素

 

    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... 

但是在返回時,所有的值都只是放入一個字符串到一個返回字段中。此代碼並返回與任何其他字段類型(例如xsd:字符串等)正常工作。

在xsd:any類型的情況下應如何返回對象,以根據名稱和值獲取具有多個字段的答案?

謝謝

回答

0

解決了這個問題。我不得不爲該字段創建SoapVar對象。

 

    $o = new Object(); 
    $o->field = $value; 
    $object->data = new SoapVar($field, XSD_ANYTYPE); 
    return $object; 

感謝

-1

這也應該工作:

$object->data = new SoapVar($data, SOAP_ENC_OBJECT);