2013-06-03 86 views
2

部署在ESB上的我的代理服務正在調用另一個獨立的REST服務。該服務返回HTTP狀態200以及響應主體中的一些數據。我的問題是我如何從響應中檢索HTTP狀態。下面是我的配置:如何檢索WSO2 ESB中REST服務返回的HTTP狀態?

<proxy name="CQProxy" 
      transports="https http" 
      startOnLoad="true" 
      trace="disable"> 
     <description/> 
     <target> 
     <inSequence> 
      <switch source="get-property('Action')"> 
       <case regex="getTaskTicket"> 
        <sequence key="GetTaskTicket"/> 
       </case> 
       <default/> 
      </switch> 
     </inSequence> 
     <outSequence> 
      <log> 
       <property xmlns:ns="http://org.apache.synapse/xsd" 
         name="Status" 
         expression="get-property('HTTP_SC')"/> 
      </log> 
      <send/> 
     </outSequence> 
     <faultSequence/> 
     </target> 
     <publishWSDL key="gov:/services/cqproxy/CQProxy.wsdl"> 
     <resource location="CQProxy.xsd" key="gov:/services/cqproxy/CQProxy.xsd"/> 
     </publishWSDL> 
    </proxy> 
    <sequence name="GetTaskTicket"> 
... 
     <property name="REST_URL_POSTFIX" 
       value="/16783484?oslc.select=dcterms:title,oslc_cm:status" 
       scope="axis2" 
       type="STRING"/> 
     <property name="HTTP_METHOD" value="GET" scope="axis2" type="STRING"/> 
     <send> 
     <endpoint> 
      <address uri="http://.../simpleQuery" 
        format="rest"/> 
      <property name="OSLC-Core-Version" value="2.0" scope="transport"/> 
      <property name="Accept" value="application/rdf+xml" scope="transport"/> 
     </endpoint> 
     </send> 
    </sequence> 
... 

我嘗試下面的代碼:

<log> 
<property xmlns:ns="http://org.apache.synapse/xsd" name="Status" expression="get-property('HTTP_SC')"/> 
</log> 

而這一個了:

<log> 
<property xmlns:ns="http://org.apache.synapse/xsd" name="Status" expression="get-property('axis2', 'HTTP_SC')"/> 
</log> 

但他們都返回null。

回答

5

更詳細閱讀WSO2文檔後,我找到了正確的答案:

<property xmlns:ns="http://org.apache.synapse/xsd" name="Status" expression="$axis2:HTTP_SC"/> 

這是奇怪的是,文件獲取屬性(「Axis2的」,「HTTP_SC」)不起作用。

+1

'get-property('axis2','HTTP_SC')'適合我。我正在使用ESB 4.7.0 – Bee

+1

@Bhathiya:你的回答也是正確的,但Alex表現的更好。 –