kettle从入门到精通 第七十四课 ETL之kettle kettle调用https接口教程,忽略SSL校验

场景:kettle调用https接口,跳过校验SSL。(有些公司内部系统之间的https的接口是没有SSL校验这一说,无需使用用证书的)

 解决方案:自定义插件或者自定义jar包通过javascript调用https接口。

1、http post 步骤调用https接口,无法通过ssl安全校验,如下图所示:

查看了kettle源码之后该步骤底层调用的是HTTPPOST类中的callHTTPPOST方法,但是该方法并未处理https调用情况,如下图所示:

2、 使用REST client步骤调用https接口,依然提示无法通过ssl安全校验,如下图所示:

 查看了kettle源码之后该步骤底层调用的是Rest类中的callReset方法,最新的源码中已经加入了参数ignoreSSL,但是该参数并未暴露配置接口,也许后续的版本后解决这个问题,如下图所示:

 3、自定义jar包方式调用https接口,总体流程设计如下图所示:

1)将自定义jar放到lib目录下。

2)javascript脚本步骤调用自定义jar方式进而调用https接口,如下图所示:

 3)关键javascript代码如下:

var httpUtil = Packages.com.xiaojingang.xiaojingang_https.HttpUtil();
//这里注意参数body如果是json字符串的话,这里自动转换为对象了,
//索引这里要重新转换为字符串
var bodyStr= body+'';
var result = httpUtil.doRequest(url,bodyStr,method,10000,true);

4)jar包中的忽略SSL校验的关键代码如下:

    private static SSLContext getIgnoreVerifySSL() {
        try {
            SSLContext sslContext = SSLContexts.custom()
                    .loadTrustMaterial(new TrustStrategy() {
                        @Override
                        public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                            return true;
                        }
                    })
                    .build();
            return sslContext;
        } catch (Exception e) {
            log.error(e.getMessage(),e);
            return null;
        }
    }

 

 

posted @ 2024-07-02 21:38  慕容尘轩  阅读(50)  评论(0编辑  收藏  举报