起因
公司业务需求,需要使用kettle调用webservice接口 ,返回需要的数据,使用kettle的 web服务查询 功能进行实现。由于也是首次使用kettle的web服务查询功能,查阅了不少资料才实现功能,在此,实现过程分享给大家,希望大家可以少走弯路。
webservice接口分析
既然需要调用webservice接口,首先我们就要了解所调用的接口的接口名称、所需参数的类型和个数、返回结果的类型和个数,才能针对具体情况具体分析。以下是的介绍webservice的组成结构:
图中所知:所需接口的名称toProbeData,接口参数名称type类型int,返回结果名称toProbeDataReturn类型string。这里请大家进行记录,因为参数和返回值的名称和类型下面会用到。
kettle组件使用
根据以上接口,我们可获知需要使用的kettle组件:
1.生成记录组件(目的是为了个web组件提供参数)
2.web服务查询组件(调用webservice接口)
3.xml文件输入组件(获取webservice的返回值)
4.JSON输入组件(解析webservice的返回值)
5.文本文件输出组件(输出结果集)
1.生成记录组件
自定义参数名称(该参数名第二步会用到)输入至图中位置,参数类型进行选择,值为参数值,即接口所需参数值,我调用的接口参数值为1或4,在此我只进行参数值为1的查询。
2.web服务查询组件
1.将webservice接口填入URL中,点击加载按钮,下方操作会出现当前service的所有接口,选择需要使用的接口。2.选择in选项卡,点击获取字段,名称选择第一步输入的参数名即可。
3.选择toProbeDataReturn选项卡,手动输入名称(第三步会用到)、WS名称(即接口返回结果名称)、WS类型(即接口返回结果类型)。
点击确定,至此,web服务查询结束。
在进行数据处理之前,您需获知webservice的返回数据,下图为我调用的接口返回:
红色框即为返回的数据,可知,返回的数据也是xml格式,返回的数据在toProbeDataReturn字段中。
由于接口返回的数据类型为xml。因此第三步我选用xml文件输入组件。
3.xml文件输入组件
选择xml文件输入组件,XML源字段名中,选择第二步中输入的名称。
点击内容选项卡,点击 获取XML文档的所有路径。将webservice的返回结果toProbeDataReturn字段中的数据粘贴至红框内,进行分析。
按照返回结果的结构进行分析,我这里选择 /soapenv:Envelope/soapenv:Body
选择 字段 选项卡,点击获取字段,输入名称(第四步要用到),xml的路径(我需要的数据在*[name()=‘toProbeDataResponse’]/*[name()=‘toProbeDataReturn’]中)
点击确定,至此,xml文件输入组件结束。
4.JSON输入组件
第三步结束之后,终于可以看到我需要的数据了!数据格式为JSON数组。但此时我只是获取了JSON格式的字符串,因此我还需要利于JSON输入组件,将JSON格式的字符串转化为可使用的结果集,方便与其他结果集进行连接。
1.选择JSON输入组件,从字段获取源选择第三步输入的名称。
字段根据JSON自行输入,名称可自定义,路径为*.名称:
例:JSON字符串中有probecode字段,名称为probecode,路径为*.probecode
点击确定,至此,JSON输入组件结束。
4.文本文件输出组件
JSON输入组件会将JSON格式的字符串转换为结果集,后期会将该结果集与其他结果集进行连接,目前仅将转化后的JSON数据进行了输出,输出格式正确。
下图为使用的所有组件:
以上,仅供参考,如有问题,请多指正。
参考文档
kettle webservice 接口数据抽取
kettle:实现xml输入text,csv,excel,json,表---->输出
通过Kettle工具解析Json接口数据并且保存到数据库中的详细操作
kettle庖丁解牛第13篇之XML文件输入