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

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

kettle组件HTTP Post,HTTP Client和REST Client的区别及使用方法_第1张图片

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

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);

kettle组件HTTP Post,HTTP Client和REST Client的区别及使用方法_第2张图片

下面我用代码模拟了一个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;
    }

kettle组件HTTP Post,HTTP Client和REST Client的区别及使用方法_第3张图片

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

kettle组件HTTP Post,HTTP Client和REST Client的区别及使用方法_第4张图片

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

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

你可能感兴趣的:(ETL工具使用,kettle,HTTP请求)