使用soap和wsdl的web服务无法正常工作php

问题描述:

我正在尝试使用wdsl和soap创建一个web服务。服务器将用php编写。使用soap和wsdl的web服务无法正常工作php

截至目前,我正在尝试通过向肥皂服务器对象添加一个函数来进行操作。我的要求是这个函数应该使用一个关联数组。现在它返回一个字符串,但它现在只是试用版,并且将按照需求返回一个数组。

为了将assoc数组作为输入,我在wsdl中定义了一个complexType。 以下是代码

<types> 
    <xsd:schema 
    targetNamespace="http://projects.kp/test/webservice/StoreService.wsdl" 
    xmlns="http://www.w3.org/1999/XMLSchema/"> 
    <xsd:complexType name="store"> 
     <xsd:element name="name" type="xsd:string" /> 
     <xsd:element name="subdomain" type="xsd:string" /> 
    </xsd:complexType> 
    </xsd:schema> 
</types> 
<message name="StoreRequest"> 
    <part name="store" type="tns:store"/> 
</message> 
<message name="StoreResponse"> 
    <part name="url" type="xsd:string"/> 
</message> 

当我运行在浏览器中SOAP客户端文件,它提供了以下错误。

Fatal error: Uncaught SoapFault exception: 
[WSDL] SOAP-ERROR: Parsing Schema: unexpected in complexType 

如果我使用字符串数据类型而不是complexType,它可以正常工作。 我想我还没有理解complexTypes是如何工作的,所以我无法调试这个。

此外,我想知道如果数组作为请求和响应类型将工作,如果客户端编码为其他语言如.NET。

(现在我的虚拟主机上的Ubuntu桌面上测试这一点,并在服务器和客户端在同一个虚拟主机,并在PHP书面)

感谢

+0

是元素这是你的WSDL为什么你使用`在消息元素的`part` type`这是在RPC /编码中使用。你是使用RPC还是doc/literal?如果你使用doc而不是替换为``。也是tns前缀绑定到targerNamespace? – Cratylus 2011-01-08 14:50:32

我认为你需要设置XSD:所有XSD:序列的xsd:??