4

空席のリストを別のアプリケーションに返すために、PHP 5.2 で SoapServer を作成しています。私の WSDL ドキュメントには、次のような複雑な型が必要です。

<xsd:element name="Vacancies">                            
  <xsd:complexType>
    <xsd:sequence>  
      <xsd:element name="Vacancy" type="ns:VacancyType" minOccurs="0" maxOccurs="unbounded"></xsd:element>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>

私の関数は、ネストされた大きな配列を生成して各欠員を集め、配列の配列 (つまり、欠員) を SoapServer に返します。

残念ながら、各配列にはインデックスが付けられています。そのため、Vacancys 内の各 VacancyType 要素には一意のインデックスがあります。これは WSDL 定義を無効にしているようで、返されたデータは単純に解析エラーをスローします。通常、キー ペアの値には連想配列を使用しますが、VacancyType の n 個のインスタンスを扱っているため、一意の参照がないため機能しません。

この種のシナリオ (例: おそらくオブジェクト) に対する既知の回避策はありますか? それとも、インデックス付き配列に対応するように WSDL ドキュメントを作り直す必要がありますか?

ありがとう

4

3 に答える 3

1

http://sam.xnet.tk/post/15/php-soap-server-part-2/によると、rpc/literalスタイルはxsdシーケンスで機能しています。ただし、ドキュメント/文字でラップされたスタイルでも機能させることはできません。

于 2011-07-19T10:11:58.430 に答える
0

nuSAOPを試してみましたか?他にインストールされているPHPライブラリは必要ありません。

PHPのドキュメントによると、PHPはSOAP 1.1、SOAP 1.2、WSDL1.1のサブセットをサポートしています。

于 2011-02-17T22:05:28.287 に答える
0

結局のところ、私は解決策を見つけました:myseflによってXMLを構築し、

new SoapVar('<myitem>...</myitem><myitem>...</myitem>', XSD_ANYXML);
于 2011-07-19T10:19:06.920 に答える