1

我有使用 SpringWebServiceTemplate调用 SOAP 服务的代码。

目前它使用:

public Object marshalSendAndReceive(String uri, final Object requestPayload)

但我想操纵入站和出站的内容。最合适的公共方法似乎是:

public <T> T sendAndReceive(String uriString,
    WebServiceMessageCallback requestCallback,
    WebServiceMessageExtractor<T> responseExtractor) 

...我会为此提供一个自定义回调和提取器。

它们的接口都指定了与WebServiceMessage.

public interface WebServiceMessage {

    Source getPayloadSource();
    Result getPayloadResult();
    void writeTo(OutputStream outputStream) throws IOException;

}

Source并且Result都是来自 的接口javax.xml.transform,并且它们似乎没有公开消息内容。两者都只有一个 setter 和 getter String systemId,没有别的。

我可以看到 有多种实现Source,都提供对有效负载的不同访问。我可以在我的回调中做这样的事情:

   StreamSource source = (StreamSource) message.getPayloadSource();

但是强制转换很脏,无论如何,我怎么知道我应该支持哪些实现?

我怎样才能获得这些内容(最好是原始 XML)?

4

0 回答 0