代码之家  ›  专栏  ›  技术社区  ›  KB22

php soapfault在soapui中不符合wsdl模式?

  •  0
  • KB22  · 技术社区  · 14 年前

    今天我遇到一个奇怪的人,事情是这样的:

    我正在为我的一个Web服务qaing设置测试套件,它是 用php5编写-利用类 SoapFault 在其他中。

    我使用类向客户机返回错误消息。例子:

    if (!$this->CheckHost(getenv('REMOTE_ADDR')))
    {
        return new SoapFault(S_CLIENT, S_STRING_IP, "", S_DETAIL_IP);
    }
    

    如果客户端未经授权,则返回soapfault…

    现在,如果我在 soapUI 3.0.1 它告诉 我认为返回的消息不符合其WSDL文件。

    WSDL文件是由我编写的,实际上不包含描述 实际的SoapFault类。需要吗?想不是因为 soapfault在soap 1.1中有详细说明。

    实际响应如下:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP-ENV:Body>
          <SOAP-ENV:Fault>
             <faultcode>SOAP-ENV:Client</faultcode>
             <faultstring>ERR_102</faultstring>
             <faultactor/>
             <detail>IP error message</detail>
          </SOAP-ENV:Fault>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    

    SOAPUI错误消息为:

    仅包含元素的元素“detail” 内容类型不能包含文本内容。

    有人知道我做错了什么吗?

    蒂亚

    K

    1 回复  |  直到 14 年前
        1
  •  1
  •   olensmar    14 年前

    http://schemas.xmlsoap.org/soap/envelope/

       <xs:complexType name="detail"><xs:sequence> 
          <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" /> 
        </xs:sequence> 
        <xs:anyAttribute namespace="##any" processContents="lax" /> 
      </xs:complexType> 
    

    ...
       <detail><msg>IP error message</msg></detail>
    ...