2

別のサービスからデータを渡す SoapServer の WSDL を作成する必要があります。提供されたデータの構造は次のとおりです。

<operationName>
    <parameterHeader></parameterHeader>
    <parameterData1></parameterData1>
    <parameterData2></parameterData2>
    ...
    <parameterDataN></parameterDataN>
</operationName>

これは、メソッドを作成する必要があることを意味します

function operationName(parameterHeader, parameterData1, parameterData2, ... parameterDataN){
  ...
}

オペレーションに提供されるパラメーターの数を知ることは不可能です。

解決策として、パラメーターなしでメソッドの WSDL を作成しようとしていますが、このメソッド内では関数func_get_args()を使用してすべてのパラメーターを取得します。

残念ながら、まだ適切な WSDL を作成できず、これが可能かどうかもわかりません。

私のWebサービスが受け取るべき正確なデータ(例)は次のとおりです。

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
    <env:Header/>
    <env:Body>
        <tns:operationResponse xmlns:tns="http://somedomain.com/demo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                              xmlns="http://anotherdomain.com/anotherdemo">
            <tns:ResponseHeader attrName1="data1" attrName2="data2" attrName3="data3" />
            <tns:ObjectData>
                <tns:ElementData ElementAttr1="data1" ElementAttr2="data2" ElementAttr3="data3"/>
            </tns:ObjectData>
            <tns:ObjectData>
                <tns:ElementData ElementAttr1="data21" ElementAttr2="data22" ElementAttr3="data23"/>
            </tns:ObjectData>
            <tns:ObjectData>
                <tns:ElementData ElementAttr1="data31" ElementAttr2="data32" ElementAttr3="data33"/>
            </tns:ObjectData>
            <tns:ObjectData>
                <tns:ElementData ElementAttr1="data41" ElementAttr2="data42" ElementAttr3="data43"/>
            </tns:ObjectData>
        </tns:operationResponse>
    </env:Body>
</env:Envelope>

そのような種類の WSDL の経験や、提供されたデータ構造を取得する方法についてのアイデアはありますか?

パラメータ名として考慮できる可能性について考えたので、他のデータをcomplexTypeとして使用できます。たぶん、WSDL はいくつかのトリックを提供します...

4

1 に答える 1

0

Mike のように、私の最初のアプローチは配列パラメーターを使用することです。プロシージャーで無制限のパラメーターを想像することは可能ですが、WSDL での定義の種類は単なる列挙型であると確信しているため、パラメーターを明示的にリストする必要があります。また、Web サービスの実装によっては、無制限の引数を管理できない場合があることも考慮してください (この場合は、リクエスター側の問題であるため、あなたの問題ではありません)。

于 2012-08-06T15:34:55.740 に答える