[英]How to see XML output of SOAP request in Spring?
我是Spring SOAP請求的新手。 我想看到SOAP請求的最終XML輸出,其中包括SOAP標頭和SOAP信封。
在調試時我達到了這段代碼
sendSourceAndReceiveToResult(partnerURI, source,
new WebServiceMessageCallback() {
public void doWithMessage(WebServiceMessage message)
throws IOException, TransformerException {
StringSource mefHeaderSource = new StringSource(
header);
SoapHeader soapHeader = ((SoapMessage) message)
.getSoapHeader();
Transformer transformer = TransformerFactory
.newInstance().newTransformer();
transformer.transform(mefHeaderSource,
soapHeader.getResult());
}
}, result);
我懷疑在這里我可以通過放置一些記錄器來查看輸出XML SOAP請求,但我不確定我是否正確。 我嘗試搜索它,但在谷歌上的所有帖子中都沒有什么是明確的。
我們正在調試的問題是客戶端無法在SOAP請求中看到SOAP標頭。
確保使用Commons Logging 1.1或更高版本。
要記錄所有服務器端消息,只需將org.springframework.ws.server.MessageTracing記錄器設置為DEBUG或TRACE級別。 在調試級別,僅記錄有效負載根元素; 在TRACE級別上,整個郵件內容。 如果您只想記錄已發送的消息,請使用org.springframework.ws.server.MessageTracing.sent記錄器; 或者org.springframework.ws.server.MessageTracing.received來記錄收到的消息。
在客戶端,存在類似的記錄器:org.springframework.ws.client.MessageTracing.sent和org.springframework.ws.client.MessageTracing.received。
以下是log4j.properties配置示例,記錄客戶端發送消息的完整內容,僅記錄客戶端接收消息的有效負載根元素。 在服務器端,記錄發送和接收消息的有效負載根:
log4j.rootCategory=INFO, stdout
log4j.logger.org.springframework.ws.client.MessageTracing.sent=TRACE
log4j.logger.org.springframework.ws.client.MessageTracing.received=DEBUG
log4j.logger.org.springframework.ws.server.MessageTracing=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p [%c{3}] %m%n
來自SoapEnvelopeLoggingInterceptor
spring文檔
特定於SOAP的EndpointInterceptor,用於記錄SoapMessage消息的完整請求和響應信封。 默認情況下,會記錄請求,響應和錯誤消息,但可以使用logRequest,logResponse,logFault屬性更改此行為
你可以通過添加啟用此攔截器
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:sws="http://www.springframework.org/schema/web-services" .../>
<sws:interceptors>
<bean class="org.springframework.ws.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor"/>
</sws:interceptors>
<sws:static-wsdl ..../>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.