2016-05-17 60 views
0

我正在嘗試創建一個Kettle轉換來填充部署在heroku上的Spark Java(sparkjava.com)服務器,而不是手動插入數據。在服務器端的代碼來走的路線上POST請求照顧「/插入」如下:如何使用Pentaho的HTTP Post步驟和Spark Java

post("/insert", (req, repl) -> { 
     String json=new String(req.bodyAsBytes()); 
     /*Some processing...*/ 
     MyRecordList myRL=MyRecordList.fromJsonString(json); 
     for (MyRecord mr : myRL.getRecords()) { 
      Instance inst = mr.toWekaInstance(trainset); 
      trainset.add(inst); 
     }  
     return "ok"; 
    }); 

有了這個,我相信整個身體會是一個MyRecordList對象的JSON。

在Pentaho一側有HTTP Post步驟,位置定義很簡單。然而,我堅持如何指定一個JSON字符串作爲發佈請求的整個主體並將其發送到服務器。根據Heroku日誌,Pentaho生成的請求甚至不會到達服務器。下面是我放在那裏的參數: General Options Fields

任何人都可以請賜教,或者告訴我其他的方式來填充服務器,請按照上述限制?

+0

當你在Pentahoo之外調用「/ insert」路由時(或許用[cURL](https://curl.haxx.se)或其他東西)會發生什麼? – codefinger

回答

0

你正在發送的json內容作爲頭,而不是在有效載荷,這是正確的事情。此外,我沒有在截圖中標識出您已將您的請求的內容類型設置爲json,可能它是以html格式發送的。我從來沒有使用Pentaho這個工具,但我建議你使用this Chrome extension這在我看來是最簡單的Rest Api測試儀。

+0

謝謝,我可以測試它並驗證它的工作 –