I am using Spring-ws. I am trying WebServiceTemplate.sendSourceAndReceive(src, mySourceExtractor);
In the extractData
callback method of the SourceExtractor
, I get a DOMSource
. Now what?
I know there is an attachment because when I call the service with soapUI, I can get the attachment (pdf file).
Is there a better way? Thanks.
use a ClientInterceptor:
public class AttachmentInterceptor implements ClientInterceptor {
Iterator<Attachment> attachments;
@Override
public boolean handleResponse(MessageContext msgCtx) throws WebServiceClientException {
WebServiceMessage msg = msgCtx.getResponse();
if (msg instanceof SaajSoapMessage) {
SaajSoapMessage sm = (SaajSoapMessage) msg;
attachments = sm.getAttachments();
return false;
} else {
return true;
}
}
public Iterator<Attachment> getAttachments() {
return attachments;
}...
then attach interceptor to WebServiceTemplate and execute call:
AttachmentInterceptor ai = new AttachmentInterceptor();
wst.setInterceptors(new ClientInterceptor [] { ai });
wst.sendSourceAndReceiveToResult(src, result);
/**
* get attachment
*/
Iterator<Attachment> it = ai.getAttachments();
then process the attachments.