我有这样的拦截器:
public class WebServiceInterceptor extends EndpointInterceptorAdapter {
@Inject
private Jaxb2Marshaller myJaxb2Marshaller;
@Inject
private WebServiceHistoryDao webServiceHistoryDao;
@Override
public boolean handleRequest(MessageContext messageContext, Object endpoint)
throws Exception {
Source payloadSource = messageContext.getRequest().getPayloadSource();
Object unmarshaled = myJaxb2Marshaller.unmarshal(payloadSource);
//EXTRACT XML HERE
//is there a better way than this:
String extractedXml = myJaxb2Marshaller.marshal(unmarshaled);
return true;
}
}
如何提取整个xml信封(用于记录目的 - 将其写入数据库)
答案 0 :(得分:1)
您不需要编写一个,API中存在一个 - SoapEnvelopeLoggingInterceptor
。请参阅javadoc。
特定于SOAP的
EndpointInterceptor
,记录SoapMessage
消息的完整请求和响应信封。默认情况下,会记录请求,响应和错误消息,但可以使用logRequest
,logResponse
,logFault
属性更改此行为。
如果您只需要查看有效负载,而不是整个SOAP信封,那么就有PayloadLoggingInterceptor
。