如何使用 Pentaho 的 HTTP Post 步骤和 Spark Java
How to work with Pentaho's HTTP Post step and Spark Java
我正在尝试创建一个 Kettle 转换来填充我的 Spark Java (sparkjava.com) 服务器,部署在 heroku 上,而不是手动插入数据。服务器端处理路由“/insert”上的 Post 请求的代码如下:
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 字符串指定为 post 请求的整个主体并将其发送到服务器。根据 Heroku 日志,Pentaho 生成的请求甚至没有到达服务器。这是我放在那里的参数:
任何人都可以启发我,或者告诉我其他方式来填充服务器,遵循上述限制吗?
您将 json 内容作为 header 而不是在负载中发送,这是正确的做法。此外,我没有在您的屏幕截图中发现您已将请求的 content-type 设置为 json,可能它是以 html 形式发送的。我从未使用过 Pentaho 这个工具,但我建议您使用 this Chrome extension,我认为这是最简单的 Rest Api 测试器。
我正在尝试创建一个 Kettle 转换来填充我的 Spark Java (sparkjava.com) 服务器,部署在 heroku 上,而不是手动插入数据。服务器端处理路由“/insert”上的 Post 请求的代码如下:
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 字符串指定为 post 请求的整个主体并将其发送到服务器。根据 Heroku 日志,Pentaho 生成的请求甚至没有到达服务器。这是我放在那里的参数:
任何人都可以启发我,或者告诉我其他方式来填充服务器,遵循上述限制吗?
您将 json 内容作为 header 而不是在负载中发送,这是正确的做法。此外,我没有在您的屏幕截图中发现您已将请求的 content-type 设置为 json,可能它是以 html 形式发送的。我从未使用过 Pentaho 这个工具,但我建议您使用 this Chrome extension,我认为这是最简单的 Rest Api 测试器。