Estoy en la etapa en la que creé un interceptor de salida y obtengo un OuputStream del mensaje SOAP. Pero, ¿cómo podría modificar el sobre SOAP justo antes de enviarlo al punto final? Me gustaría eliminar algunos elementos xml.¿Cómo modificar la solicitud SOAP generada?
Respuesta
una forma podría ser obtener el documento y ejecutarlo a través de la transformación XSLT.
Usted puede obtener en el documento en el handleMessage de su interceptor llamando
@Override
public void handleMessage(SoapMessage message) throws Fault{
SOAPMessage saaj = message.getContent(SOAPMessage.class);
Document doc = saaj.getSOAPPart(); // This actually returns a SOAPPart instance but it does implement the w3c Document interface
//play around with the document, doc is a reference so any changes made to that instance
//will be forwarded to the rest of the chain
}
cuidado sin embargo que si se tiene la seguridad como la firma XML que debe ser realizada en el contenido de jabón debe asegurarse de que el interceptor ocurre ANTES de que se aplique la firma, de lo contrario, los invalidará.
Para jugar con el tiempo del interceptor, puede especificar la fase en la que se ejecutará. CXF también debe respetar el orden en que los configurará si se realizan en la misma fase.
pero no tome mi palabra para ella ... comprobar estos para obtener más información
- http://cxf.apache.org/docs/interceptors.html
- http://fusesource.com/docs/esb/4.2/cxf_interceptors/CXFInterceptorIntro.html
depuración a través del código fuente CXF también me ayudó mucho en la comprensión de cómo funcionaba
---- ---- EDITAR
(gracias Daniel :-)
Para que esto funcione, debe tener configurado SAAJOutternter en su pila. Puede agregarlo manualmente o simplemente hacer que forme parte de su interceptor. Here is un ejemplo de un interceptor que prácticamente hace lo que quiere.
se refieren a este enlace para una descripción de las fases del interceptor
http://fusesource.com/docs/esb/4.2/cxf_interceptors/CXFInterceptPhasesAppx.html
su enlace está roto y va a un menú redhat genérico. Siempre es una buena idea resumir qué información contiene el enlace en caso de que esto suceda. – cosbor11
he publicado una respuesta aquí https://stackoverflow.com/a/12948702/792313 Se basa en todo el cuerpo sustitución.
- 1. Firmar la solicitud JAX-WS SOAP
- 2. La solicitud SOAP deja hilos colgando
- 3. ¿cómo se envía una solicitud SOAP?
- 4. Solicitud SOAP múltiple usando Javascript
- 5. Cómo publicar solicitud SOAP desde PHP
- 6. Solicitud SOAP con el atributo
- 7. Modificar solicitud POST en mod_perl2
- 8. ¿Cómo enviar una solicitud SOAP y analizar la respuesta SOAP en formato XML en Android?
- 9. ¿Enviar una solicitud SOAP, por dónde empezar?
- 10. Intentando construir una solicitud SOAP correcta
- 11. Solicitud de SOAP en PHP con CURL
- 12. elementos Adición de solicitud SOAP Header para la autenticación
- 13. Solicitud SOAP con <stdClass> etiquetas
- 14. Eliminar el espacio de nombres de la solicitud SOAP
- 15. Agregar un archivo adjunto a la solicitud SOAP
- 16. ¿Cómo puedo añadir un encabezado de SOAP mediante solicitud
- 17. ¿Cómo se genera la solicitud generada y la respuesta de Groovy RestClient?
- 18. cómo enviar solicitud SOAP con certificado SSL en PHP?
- 19. Cómo agregar encabezados SOAP a una solicitud SOAP utilizando JAX-WS?
- 20. ¿Cómo publicar una solicitud SOAP desde un navegador?
- 21. Modificar el valor de los parámetros de la solicitud
- 22. Modificar encabezados HTTP para una solicitud JSONP
- 23. modificar encabezados de solicitud en Internet Explorer
- 24. Cómo agregar el atributo SoapExtension al proxy del cliente del servicio web generado sin modificar la clase generada?
- 25. ¿Cómo hacer la autenticación usando SOAP?
- 26. ¿Cómo puedo editar el sobre y el encabezado SOAP con SOAP :: Lite de Perl?
- 27. Cómo descifrar la contraseña generada por wordpress
- 28. Cómo usar la clase generada por Xsd2Code
- 29. Enviar solicitud SOAP desde una dirección IP específica
- 30. Servicio de registro Solicitud y respuesta SOAP en C#
Muchas gracias por su respuesta Newtopian. message.getContent (SOAPMessage.class) siempre devuelve Nulo :-(¿En qué fase debo poner este código para acceder al sobre SOAP? – kiwifrog
También necesitaría configurar en el SAAJOutterteror junto con su interceptor que hace la transformación. –
de hecho, Daniel tiene razón, debe asegurarse de que el SAAJOutinterceptor esté configurado, ya que es él quien serializa los datos en un objeto SOAPMessage. De manera predeterminada, mi configuración estaba configurada, así que no tuve que preocuparme demasiado por eso. el objeto ya no será nulo y podrás jugar con el árbol DOM a tu antojo. – Newtopian