Pregunta

Me encontré con un extraño hoy en día, es la siguiente:

Soy la creación de bancos de pruebas de controles de calidad de un servicio web de la mina, que es escrito en PHP5 - haciendo uso de la clase SoapFault entre otros <. / p>

Yo uso la clase para devolver mensaje de error para los clientes. Ejemplo:

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

La devolución de un SoapFault si el cliente no está autorizado ...

Ahora, si añado una afirmación esquema de Cumplimiento en soapUI 3.0.1 Narra mí que el mensaje devuelto no es compatible con TI de archivo WSDL.

El archivo WSDL está escrito por mí y lo hace de hecho no contiene una descripción de la clase SoapFault real. ¿Sería necesario? El pensamiento no porque SoapFault se spezified en Soap 1.1 de todos modos.

La respuesta real es el siguiente:

<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>

El mensaje de error soapUI es:

  

Elemento 'detalle' con el elemento de sólo   tipo de contenido no puede tener contenido del texto.

¿Alguien tiene una pista de lo que estoy haciendo mal?

tia

K

¿Fue útil?

Solución

El esquema XML SOAP 1.1 ( http://schemas.xmlsoap.org/soap/envelope/ ) define el elemento de detalle como

   <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> 

lo que significa que no puede contener texto al igual que en su fallo. Intente cambiar la respuesta a algo como

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

Espero que esto ayude!

cordiales,

/ Ole eviware.com

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top