0

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;
    }
    $objectを返します。

SOAP呼び出しは、次のような回答を返します。

    ..応答>
    -data> value1value2value3value4- / data>
    .../応答>

オブジェクトを返す前に、オブジェクトが本来のように作成されていることがわかります。

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

    等...

ただし、リターン応答では、すべての値が1つの文字列に入れられて1つのリターンフィールドに入れられます。このコードと戻り値は、他のフィールドタイプ(xsd:stringなど)で正しく機能します。

xsd:anyタイプの場合、名前と値に応じて複数のフィールドで回答を取得するには、オブジェクトをどのように返す必要がありますか?

ありがとう

4

2 に答える 2

0

問題を解決しました。

フィールドのSoapVarオブジェクトを作成する必要がありました。

    $ o = new Object();
    $ o-> field = $ value;
    $ object-> data = new SoapVar($ field、XSD_ANYTYPE);
    $objectを返します。

ありがとう

于 2012-12-17T13:06:15.537 に答える
-1

これも機能するはずです:

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