場景:小伙伴在使用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_fileapp = Flask(__name__)@app.route('/api/data', methods=['POST']) def receive_data():# 使用 request.json 獲取 POST 請求中的 JSON 數據data_json = request.jsonresponse_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的說明問題,歡迎評論區留言探討。