使用WSDL构建用于SOAP的PHP数组

时间:2009-12-17 14:51:15

标签: php web-services wsdl soapserver

我正在编写一个带有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。

不幸的是,每个数组都被编入索引。因此,职位空缺中的每个VacancyType元素都有一个独特的索引。这似乎抛弃了WSDL定义,返回给我的数据只会引发一个解析错误。我通常使用关联数组作为密钥对值,但是因为我正处理的是VacancyType的n个实例,因为没有唯一的引用而无法工作。

是否存在针对此类场景的已知解决方法(例如:可能是对象),还是应该重新编写WSDL文档以满足索引数组的需要?

由于

3 个答案:

答案 0 :(得分:1)

根据http://sam.xnet.tk/post/15/php-soap-server-part-2/,rpc / literal样式与xsd序列一起使用。但是,我也无法使用document / literal包装样式。

答案 1 :(得分:0)

你试过nuSAOP了吗?不需要其他已安装的PHP库:

根据PHP文档,PHP支持SOAP 1.1,SOAP 1.2和WSDL 1.1的子集

答案 2 :(得分:0)

毕竟,我找到了一个解决方案:我通过mysefl构建XML并使用

new SoapVar('<myitem>...</myitem><myitem>...</myitem>', XSD_ANYXML);