簡體   English   中英

如何在Spring中查看SOAP請求的XML輸出?

[英]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記錄器設置為DEBUGTRACE級別。 在調試級別,僅記錄有效負載根元素; 在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM