2017-09-29 33 views
0

我在Linux機器上安裝了WSO2 EI 6.1.1。我爲一個可以獲取GET和PUT請求的休息接口創建了一個通過代理。我已經設置應該使基於包括在請求的URL參數一些deicisions一個Java類中保wso2企業集成商類過濾器獲取參數

http://xx.xx.xx.xx:8280/services/app/url?token=ABCD 

當我要求從類的請求的情況下,我可以看到的內容的信封和resquest。

System.out.println("Context: \n " + context.getMessageString()); 

To : /services/app/url?token=ABCD 
MessageID : urn:uuid:431940fd-201e-43a3-aad1-0ca5e36297dd 
Body : <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body/></soapenv:Envelope> 

如何獲取令牌參數的值?沒有辦法我已經嘗試過工作。


UPDATE:

這是當前的序列:

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="jsonvalidate" xmlns="http://ws.apache.org/ns/synapse"> 
    <log> 
     <property expression="get-property('query.param.token')" name="token"/> 
    </log> 
    <property name="pass" scope="default" type="STRING" value="yes"/> 
    <property expression="get-property('query.param.token')" 
     name="token" scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/> 
    <class name="authzMediator.validate"> 
     <axis2ns15:property name="validated" value="1" xmlns:axis2ns15="http://ws.apache.org/ns/synapse"/> 
     <axis2ns16:property name="validated1" value="yes" xmlns:axis2ns16="http://ws.apache.org/ns/synapse"/> 
    </class> 
    <log category="DEBUG"> 
     <property expression="get-property('token')" name="token1" xmlns:ns="http://org.apache.synapse/xsd"/> 
    </log> 
    <filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('pass') = 'yes'"> 
     <then> 
      <class name="authzMediator.trace"> 
       <axis2ns17:property name="msg" value="YES" xmlns:axis2ns17="http://ws.apache.org/ns/synapse"/> 
      </class> 
     </then> 
     <else> 
      <class name="authzMediator.trace"> 
       <axis2ns18:property name="msg" value="NO" xmlns:axis2ns18="http://ws.apache.org/ns/synapse"/> 
      </class> 
      <drop/> 
     </else> 
    </filter> 
</sequence> 

我看到的是,在第一個步驟(日誌)我看到這一點:

[EI-Core] INFO - LogMediator To: /services/lsrest/clients/jordipc/3/0/14?token=patata, MessageID: urn:uuid:3b08226e-4a46-474a-8d7c-c4c786e51b4c, Direction: request, token = null 

回答

0

最終的結果是基於一個雙作用:

  1. 定義同爲一個函數值$url:token和名稱的屬性介體「令牌」。

  2. 在類中介調用這個函數context.getProperty("token")

1

你可以通過get-property('uri.var.token')[1]訪問token參數的值。

有兩種使用此值的方法。

(1)將令牌作爲參數傳遞給類中介。 按照[2]獲取樣本。

(2)在類中介mediate()方法中訪問此屬性,如下所示。

token = synCtx.getProperty('uri.var.token'); 

[1] https://docs.wso2.com/display/ESB490/HTTP+Endpoint [2] https://docs.wso2.com/display/ESB490/Class+Mediator

+0

我不知道如果我做正確。我創建了一個名稱爲token和expresion的屬性(get-property('uri.var.token')),並嘗試從(context.getProperty(「token」))類中獲取值。我得到NULL值。哪裏不對? – jordi

+0

在傳遞給類調解器之前,您是否可以記錄uri.var.token以查看它是否先被正確設置? – maheeka

+0

INFO - LogMediator To:/ rest/path?token = pptttpptt,MessageID:urn:uuid:84909eeb-962b-4ac9-9c86-18cf07ce976c,方向:請求,令牌=空 – jordi