2015-01-08 46 views
0

我正在做一些非常簡單的腳本調解作爲測試,看看我是否可以改變我的服務器返回的有效載荷。getPayloadJSON返回一個空對象

我的中介的有效載荷出來爲:

{"origin":"202.37.75.130"} 

然後我嘗試做一個非常簡單的檢查,看看是否獲取和有效載荷設置工作:

<script language="js"> 
    var older = mc.getPayloadJSON(); 
    var newer=older; 
    mc.setPayloadJSON(newer);   
</script> 

從此我的結果是:

{"jsonObject":""} 

我已經完成了測試,顯示setPayloadJSON()的作品,這意味着我的getPayloadJ SON必須返回一個空的對象。

查看日誌文件顯示此:

ERROR {org.apache.synapse.mediators.bsf.ScriptMessageContext} - JSON object is null. {org.apache.synapse.mediators.bsf.ScriptMessageContext} 

是否有其他人有這個錯誤?

回答

2

萬一有人有同樣的問題,我設法讓我的工作。

我不得不做一個變通辦法:

  1. 腳本調解員之前使用屬性中介設置屬性:

屬性名= 「JSONPayload」 表達=「JSON-EVAL($ 。)」

  • 在該腳本中介體,通過這樣做,得到所述有效載荷(字符串):
  • var pl_string = mc.getProperty(「JSONPayload」);

  • 現在必須將字符串轉換成JS對象:
  • 變種PL = JSON.parse(pl_string);

    1. 操作有效負載,就好像您使用getPayloadJSON()獲得它一樣。

    我知道這是一個黑客一起的方法,但沒有其他方式爲我工作,所以我試了這一個。

    某些情況下任何人想要調試它的信息:

    我正在使用API​​管理器1.7。

    我將消息構建器和格式化程序設置爲: Builder class =「org.apache.synapse.commons.json。JsonStreamBuilder」 格式化類=‘org.apache.synapse.commons.json.JsonStreamFormatter’

    0

    最近,我需要添加事件,有效載荷JSON數據發送給隊列。下面是爲我工作的腳本。

    <property name="JSONPayload" expression="json-eval($.)"/> 
          <script language="js"> 
            <![CDATA[ 
            var pl_string = mc.getProperty("JSONPayload"); 
            var newPayload="{\"event\": " + pl_string + "}"; 
            mc.setPayloadJSON(newPayload); 
           ]]> 
          </script> 
    <log level="full" />