如何使用spring-ws从Web服务获取soap附件

时间:2013-03-01 20:01:53

标签: java web-services spring spring-ws

我正在使用Spring-ws。我正在尝试WebServiceTemplate.sendSourceAndReceive(src, mySourceExtractor);extractData的{​​{1}}回调方法中,我获得了SourceExtractor。现在怎么样?

我知道有附件,因为当我用soapUI调用服务时,我可以获得附件(pdf文件)。

有更好的方法吗?感谢。

1 个答案:

答案 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();

然后处理附件。