kettle组件HTTP Post,HTTP Client和REST Client的区别及使用方法

最近项目要调用第三方接口来获取json数据,并解析数据入库。这里用到了kettle作为数据抽取工具。Kettle 除了常规的数据处理之外,还可以模拟发送HTTP client/post  ,REST client。

这里顺便讲一下这三个组件的区别之处,省的下次绕迷糊。 

1.HTTP Post组件

”post“顾名思义应该就是http请求方式为post,这里查看源码也得到证实,是引入的org.apache.commons.httpclient.methods里面的方法。

try {
      if ( isDetailed() ) {
        logDetailed( BaseMessages.getString( PKG, "HTTPPOST.Log.ConnectingToURL", data.realUrl ) );
      }

      // Prepare HTTP POST
      //
      HttpClient httpPostClient = SlaveConnectionManager.getInstance().createHttpClient();
      PostMethod post = new PostMethod( data.realUrl );
      // post.setFollowRedirects(false);

下面我用代码模拟了一个get方式的请求,在kettle中使用该组件调用该请求,未获取到结果集。返回结果中提示“系统发生异常”,可想而知,该组件并不支持get方式的请求。(这里顺便提示一下,由于HTTP Client和Post都是查询菜单里的组件,并不是输入流组件,所以使用该组件前面必须要配合输入流的组件使用,否则执行的时候,由于你并没有输入流传入,所以程序自动判断你的转换没有源数据流入,自动结束运行,程序会自动退出,不会执行后面的流程。所以,要切记,使用该组件之前一定要有输入组件,可以将url或者请求参数作为输入流)。

@RequestMapping(value = "/infoTrans", method = GET, produces = "application/json")
    public Object infoTrans(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // TODO Auto-generated method stub
        String attribute = (String)request.getAttribute("p2");
        result = "{\r\n" +
                "\"BasicResponse\": {\r\n" +
                "\"succeeded\": 1\r\n" +
                "},\r\n" +
                "\"RTDataSets\": [\r\n" +
                "{\r\n" +
                "\"kksCode\": \"EB002HP4MKA01MK001BN01J1CB001BB02\",\r\n" +
                "\"RTDataValues\": [\r\n" +
                "{\r\n" +
                "\"Value\": 5.5944,\r\n" +
                "\"Time\": 1446184512000\r\n" +
                "},\r\n" +
                "{\r\n" +               
                "}\r\n" +
                "]\r\n" +
                "}";      
        return result;
    }

所以。使用该组件的时候,一定要知道你请求的接口请求方式是什么类型的。接下来,那你一定会问,如果HTTP Post是请求Post方式的,那Get方式的怎么请求呢,没错,就是Http Client组件了,不知道官方为什么把组件名命名为这样,而不是叫做HTTP Get,可能命名不好听吧....额,反正我是圆不下去了,管他呢,everything 有毒....,然后我用Client组件请求该接口,ok,一切顺利。

 接下来,讲一讲剩下的那两个组件,REST Client和Json数据解析...这里由于笔没水了,想看更多内容,请前往此处..

http://sharehoo.cn/topic/detail/438

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
这个错误通常表示在使用Kettle中的REST Client组件时,无法找到有效的证书路径。这个问题通常是由于缺少或未正确配置SSL证书引起的。 为了解决这个问题,你可以尝试以下几种方法: 1. 确保你的Java环境已经正确配置了SSL证书。你可以检查Java安装目录下的`cacerts`文件,确保其中包含了正确的证书路径。如果没有,你可以尝试手动导入证书。 2. 如果你使用的是自签名证书或者私有CA颁发的证书,你需要将证书导入到Java的信任库中。可以使用`keytool`命令来完成这个操作。例如,使用以下命令将证书导入到信任库中: ``` keytool -import -trustcacerts -alias mycert -file /path/to/certificate.crt -keystore /path/to/cacerts ``` 注意替换`mycert`为别名,`/path/to/certificate.crt`为证书文件路径,`/path/to/cacerts`为Java信任库路径。 3. 如果你使用的是自定义信任库而不是Java默认的`cacerts`文件,你需要在Kettle的启动脚本中添加相应的参数来指定信任库的位置。例如,在启动脚本中添加以下参数: ``` -Djavax.net.ssl.trustStore=/path/to/custom_truststore.jks -Djavax.net.ssl.trustStorePassword=your_password ``` 注意替换`/path/to/custom_truststore.jks`为自定义信任库的路径,`your_password`为信任库的密码。 请根据你的实际情况尝试以上方法,希望能够解决你遇到的问题。如果问题仍然存在,请提供更多的错误信息和具体情况,以便我能够更好地帮助你。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值