簡體   English   中英

從Spring WS Interceptor獲取請求參數

[英]Getting Request parameters from Spring WS Interceptor

我在Spring WS上使用Jaxb 2,並且有一個針對特定有效負載的攔截器,並且工作正常。

在這里,我的要求是從攔截器的handleRequest方法中讀取請求參數。 我知道這應該很簡單。 但是無法找到一種讀取請求參數的方法。 目前,我的handleRequest方法如下所示。

@Override
public boolean handleRequest(MessageContext messageContext, Object endpoint)
    throws Exception {

    boolean proceed = true;

    SaajSoapMessage saajSoapMessage = 
                    (SaajSoapMessage) messageContext.getRequest();

    SOAPMessage soapMessage = saajSoapMessage.getSaajMessage();

    Document doc = saajSoapMessage.getDocument();

    Element element = doc.getElementById("request");
}

我的Endpoint類的相關部分是

@PayloadRoot(namespace = NAMESPACE, localPart = "confirOrderRequest")
public @ResponsePayload ConfirmOrderResponse handleConfirmOrder(
    @RequestPayload ConfirmOrderRequest confirmOrderRequest) {

     ...........
}

在這里,我的要求是在攔截器handleRequest方法中獲取ConfirmOrderRequest隨附的orderId,是否可以直接執行此操作,或者是否需要為此進行一些XML解析?

@VitualTroll,它對我有所幫助,謝謝!

但是這個問題的答案是錯誤的(至少在我看來)。 我的新handleRequest()方法的主體如下所示。 希望這可以為將來節省一些時間。 這里jaxb2Marshaller是我的四季豆。

  @Autowired
  private Jaxb2Marshaller jaxb2Marshaller;

  @Override
  public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception {

    boolean proceed = true;

    SaajSoapMessage saajSoapMessage = (SaajSoapMessage) messageContext.getRequest();


    SoapBody requestBody = saajSoapMessage.getSoapBody();
    Object obj = jaxb2Marshaller.unmarshal(requestBody.getPayloadSource());


    if (obj instanceof ConfirmOrderRequest ) {
      ConfirmOrderRequest cor = (ConfirmOrderRequest ) obj;

      String orderId = cor.getOrderId();

      ...........
      .......
    }
  .....
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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