场景:小伙伴在使用kettle调用https post接口过程中无法正常调用,程序出错问题,今天演示下用自研插件轻松解决这个问题。
1、使用openssl 生成自签名证书
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
2、使用python 提供https接口
1)启动https服务,地址为https://127.0.0.1:443/api/data
2)代码如下:
from flask import Flask, jsonify, request,send_file app = Flask(__name__) @app.route('/api/data', methods=['POST']) def receive_data(): # 使用 request.json 获取 POST 请求中的 JSON 数据 data_json = request.json response_data = { 'message': 'Data received successfully!', 'data': data_json } return jsonify(response_data) if __name__ == '__main__': # 启用 HTTPS,指定证书和私钥文件的路径 app.run(debug=True, host='0.0.0.0', port=443, ssl_context=('cert.pem', 'key.pem'))
3、将kettle-httppost-plugin-1.0插件放到kettle的plugins目录下面,重启spoon。
4、设计流程
1)生成记录步骤,驱动流程
2)Http Post Plus,采用httppost方式调用http/或者https接口,本次演示调用https接口。
3)写日志,打印https接口返回内容。
4)Http Post Plus设置
输入url https://127.0.0.1:443/ping,直接调用接口报错,错误信息如下
2025/08/04 21:18:39 - Http Post Plus.0 - ERROR (version 9.3.0.0-428, build 9.3.0.0-428 from 2022-04-12 04.56.25 by buildguy) : !HTTP.ErrorInStepRunning!
2025/08/04 21:18:39 - Http Post Plus.0 - 无法从[https://127.0.0.1:443/api/data]读取结果
2025/08/04 21:18:39 - Http Post Plus.0 - sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
勾选useSSL,继续测试,https接口成功调用,另外原始http post插件响应结果中有中文时会出现乱码,http post plus插件也解决了中文乱码问题。
5、其他功能
本插件除了可以绕过https post接口中的ssl校验,还可以下载二进制流文件,重试等功能。
写在最后
Http client plus和http post plus插件可以完美解决调用调用https get和post接口问题以及文件流下载问题,你还遇到http的说明问题,欢迎评论区留言探讨。