1、场景需求
群里一位老朋友想通过http接口下载文件流,然后将文件流保存为文件存储到本地,如下图所示:
2、做过应用程序研发,对http知识有所了解的,结合对方发的postman截图,一眼就知道了接口的真实面目。接口返回的content-type是application/octet-stream且有文件下载说明接口通过Reponse将文件流输出,接口本身是没有返回值的。不要问我为啥知道,这就是经验。如下图所示:
3、开始折腾
1)首先通过python搞个文件流接口进行模拟,如下图所示:
2)使用http post 组件请求python 文件下载接口,能接收到文件流,但是文件无法正常复原,如服务器输出的是zip文件,但是文本文件输出步骤将文件流写进了txt文件,原有组件无法解决此问题。
4、kettle自定义插件/组件
1)通过原有步骤无法解决,咱们就自定义组件来解析文件流。自定义组件开发过程略。
将自定义插件文件放到kettle的plugins文件下,重启kettle即可通过左侧转换分类找到此组件,如下图所示:
2)通过生成记录步骤来模拟http请求相关参数,如下图所示:
3)javascript步骤来沟通header参数,如下图所示:
4)通过kk自定义转换插件设置请求参数,{{xx}}表示从前面步骤获取字段值且自动替换,如下图所示:
5)将demo发给朋友之后,将相关参数修改之后,完美实现。
5、其他思路
1)通过js调用外部jar。
2)通过kettle调用pytohn脚本实现。
3)通过kettle的java步骤来实现。
4)通过shell脚本实现。