Pregunta

Estamos desarrollando un nuevo servicio web y estamos estudiando las "mejores prácticas" Para devolver errores en la respuesta de jabón.

Estábamos estudiando la posibilidad de crear un objeto de respuesta de error que cada respuesta contuviera como propiedad. Sin embargo, esto parece un poco pesado y se preguntan si es posible usar el encabezado SOAP para llevar esta información. ¿Cómo lidias normalmente con los errores personalizados usando SOAP?

¿Fue útil?

Solución

SOAPFault se utiliza para mantener información de error y estado, y el servidor devuelve 500 en el encabezado HTTP para que lo declare como error.

vea la especificación de W3.org

http://www.w3.org/TR/ 2000 / NOTE-SOAP-20000508 / # _ Toc478383507

Puede diseñar su propia ficha de información colocándola en el encabezado de jabón o incluso dentro de un elemento en el resultado de su devolución siempre que lo documente claramente para un tercero. Sin embargo, esa no es la forma estándar de aumentar los errores.

Otros consejos

Soap ya usa encabezados personalizados para información de error, todo lo que necesita hacer es lanzar una excepción en el lado del servidor, y la excepción se presenta en el lado del cliente como un SoapException .

Puedes lanzar SoapExceptions en el servidor si quieres tener más control sobre el mensaje / información de excepción.

Editar: Para obtener información adicional junto con la solicitud, se pueden usar cabeceras de jabón personalizadas. Aquí hay un artículo de ejemplo en CodeProject que usó cabeceras de jabón personalizadas para la autenticación, pero personalizada los encabezados de soap se pueden usar para otros fines, como el envío de información adicional que no es necesariamente una condición de error (puede ser información de lógica de negocios)

He usado técnicas similares en el pasado para operaciones complejas. Especialmente cuando necesita (¿múltiples?) Descripciones de error, así como un código de error.

Los encabezados de jabón son para información fuera de banda y no deben usarse para mensajes de error. Además, los encabezados de jabón no deben usarse en respuestas de jabón porque:

  • si mustUnderstand falta o es 0, el cliente puede ignorarlo de forma segura.
  • si mustUnderstand es 1, el cliente no puede indicar que no lo entiende (ya que es una respuesta).

Y sí, sé que algunos estándares WS- * describen encabezados de jabón en la respuesta ...

Entonces,

Use las fallas de jabón para los errores que son lo suficientemente graves como para que no haya un objeto de respuesta. Agregue un token de estado a la respuesta para avisos y mensajes de información.

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