我正在使用Spring-ws。我正在尝试WebServiceTemplate.sendSourceAndReceive(src, mySourceExtractor);
在extractData
的{{1}}回调方法中,我获得了SourceExtractor
。现在怎么样?
我知道有附件,因为当我用soapUI调用服务时,我可以获得附件(pdf文件)。
有更好的方法吗?感谢。
答案 0 :(得分:1)
使用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;
}...
然后将拦截器附加到WebServiceTemplate并执行call:
AttachmentInterceptor ai = new AttachmentInterceptor();
wst.setInterceptors(new ClientInterceptor [] { ai });
wst.sendSourceAndReceiveToResult(src, result);
/**
* get attachment
*/
Iterator<Attachment> it = ai.getAttachments();
然后处理附件。