0

我正在使用 Spring-ws。我正在尝试WebServiceTemplate.sendSourceAndReceive(src, mySourceExtractor); 在 的extractData回调方法中SourceExtractor,我得到一个DOMSource. 怎么办?

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

有没有更好的办法?谢谢。

4

1 回答 1

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 并执行调用:

    AttachmentInterceptor ai = new AttachmentInterceptor();
    wst.setInterceptors(new ClientInterceptor [] { ai });
    wst.sendSourceAndReceiveToResult(src, result);

    /**
     * get attachment
     */
    Iterator<Attachment> it = ai.getAttachments();

然后处理附件。

于 2013-03-02T03:34:30.483 回答