Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Attach en un request a un Web Service

Buenas tardes, soy nuevo en este foro y acudo a su sabiduria porque hace dias estoy tratando de solucionar un tema laboral y no doy con la solucion. La cuestion es la siguiente, tengo que invocar un servicio de un sistema de seguros, la invocacion en lugar de ir los parametros del servicio en el body del request, van attachados al request como un contenido xml y en el body del request se indica que servicio se desea consumir y una uri de tipo cid:.* que hace referencia a este contenido MIME attachado. Estoy utilizando Spring WS y un ejemplo del codigo seria el siguiente


WebServiceMessageCallback smCallBack = new WebServiceMessageCallback(){

public void doWithMessage(WebServiceMessage message)
throws IOException, TransformerException {

SaajSoapMessage saajSoapMessage = (SaajSoapMessage) message;
SOAPMessage saajMessage = saajSoapMessage.getSaajMessage();

try {

context.setSOAPMessage(saajMessage);
SOAPMessage secureMessage = cprocessor.secureOutboundMessage(context);

AttachmentPart attachmentPart = secureMessage.createAttachmentPart() ;
attachmentPart.setContent("Hola Mundo!!!!", "text/plain");
secureMessage.addAttachmentPart(attachmentPart);

saajSoapMessage.setSaajMessage(secureMessage);

} catch (XWSSecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

};

MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SaajSoapMessageFactory newSoapMessageFactory = new SaajSoapMessageFactory(messageFactory);
this.getWebServiceTemplate().setMessageFactory(newSoapMessageFactory);

this.getWebServiceTemplate().marshalSendAndReceive(objectFactory.createCallRq(callRq), smCallBack);

Este codigo con el AttachmentPart (Lo encontre por internet), al invocar el servicio me devuelve un error http 500, si le quito esto la invocacion se realiza.

En definitiva, necesito resolver dos cosas y en lo posible con Spring WS
1. lograr attachar un docuemnto xml al request
2. de este Attach conseguir esta identificacion cid (Ej. "cid:56b1ea94-a9f4-47ca-90bc-6e57d808d79f"), ya que uno de los parametros del body es este dato.

Espero alguno me pueda ayudar, es la primera vez que me enfrento a un servicio de este tipo.

Desde ya muchas gracias, saludos.

julio 20, 2014 | Registered Commenterproteo

Hola

No tengo experiencia peticion de servicios web con envío de adjuntos en la petición, por lo que veo te da un error 500, por lo que veo el ejemplo que pones envías un fichero texto plano y por lo que dices en el enunciado se tiene que enviar un xml. a lo mejor el servicio espera un xml por eso da error 500?

A ver si esto te ayuda:

http://stackoverflow.com/questions/6433762/how-do-i-add-an-attachment-to-a-response-payload-in-spring-ws

Saludos

julio 24, 2014 | Registered Commenterxabe