在Nifi中如何使用Groovy脚本调用Rest服务

时间:2019-07-28 15:43:40

标签: groovy apache-nifi

在nifi中,如何调用POST json数据并获取json响应。我试图通过添加HTTPbuilder库来使用HTTPbuilder。但是得到异常

Caused by: java.lang.ClassNotFoundException: org.apache.http.client.HttpResponseException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:677)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:787)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:775)
    ... 50 common frames omitted

1 个答案:

答案 0 :(得分:0)

下面是在GroovyScript中调用POST休息服务的示例

        def jsonBody= '{\"query\":{\"bool\":{\"must\":[{\"match\":{\"FlowID\":' + flowID + '}}]}}}'
        def url ="http://localhost/rest"
        def post = new URL(url).openConnection()
        post.setRequestMethod("POST")
        post.setDoOutput(true)
        post.setRequestProperty("Content-Type", "application/json")
        post.getOutputStream().write(jsonBody.getBytes("UTF-8"))
        def w_getResponseCode = post.getResponseCode();
        def response = ""
        if (w_getResponseCode.equals(200)) {
            response = post.getInputStream().getText()
        }

//使用JsonSlurper解析json中的响应。

您可以在ExecuteGroovyScript Processor中使用以上代码,也可以在ExecuteGroovyScript中创建json,然后将InvokeHttp与POST http方法结合使用