2014-10-11 30 views
1

我是全新的,以Pentaho的,我尝试做以下工作流程:Pentaho的HTTP邮政JSON

  • 读了一堆线出来的DB
  • 做一些转换
  • 将它们发布到JSON中的REST Web服务

我已经找到了前两个使用输入步骤和Json输出步骤。

不过,我有两个问题做最后一步:

1)我不能得到的JSON格式的我多么希望。当我只想要{...}时,它坚持要做{""=[{...}]}。这不是什么大问题 - 我可以解决这个问题,因为我可以控制Web服务,并且可以稍微放宽输入要求。 (注意:这个页面http://wiki.pentaho.com/display/EAI/JSON+output给出了一个我想要的输出的例子,通过设置no. rows in a block=1和一个空的JSON块名称,但它不像广告所说的那样工作。)

2)这是关键之一。我无法将数据作为JSON获取到POST。它发布为key=value,其中的关键字是我在HTTP Post字段名称中指定的名称(位于'字段'选项卡上),值为编码的JSON。我只想发布JSON作为请求主体。我尝试过使用Google搜索,但找不到其他人这样做,导致我相信我刚刚接近这个错误。任何指针在正确的方向?

编辑:我很喜欢脚本(用Javascript或其他语言),但是当我尝试在自定义javascript代码段中使用XmlHttpRequest时,出现XmlHttpRequest未定义的错误。

谢谢!

回答

3

这很简单...只需使用REST客户端(http://wiki.pentaho.com/display/EAI/Rest+Client)而不是HTTP Post任务。不知何故,我所有的Google搜索都没有发现,所以我会在这里留下这个答案,以防别人遇到同样的问题。

+0

我遇到了同样的问题。你能发布工作配置吗?谢谢 – Don 2016-07-01 16:20:53

2

1.)您需要使用已修改的Java脚本步骤解析JSON。例如如果JSON输出的输出值被调用result及其内容为{"data"=[{...}]},则应该调用var plainJSON = JSON.stringify(JSON.parse(result).data[0])来获取JSON。

2.)在HTTP Post步骤中,请求实体字段应为plainJSON。此外,不要忘记添加Content-Type的标头为application/json(您可能必须将其添加为常量)

+0

谢谢@eych。没有任何工作,但这工作像一个魅力。 对于其他人 - 只需要清楚,它将是JSON输出 - >修改的Javascript值 - > Rest Client。 – user2798227 2017-08-23 03:54:08