Balakrishna D
Balakrishna D

Reputation: 464

Consuming Rest API from Nifi

Below is my nifi job to consume the secure rest api.

enter image description here

When I run invokeHttp processor I am getting the following exception:

2017-09-19 07:58:59,744 ERROR [Timer-Driven Process Thread-3] o.a.nifi.processors.standard.InvokeHTTP
java.lang.NullPointerException: null
        at org.apache.nifi.processors.standard.InvokeHTTP.setHeaderProperties(InvokeHTTP.java:859) ~[nifi-standard-processors-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
        at org.apache.nifi.processors.standard.InvokeHTTP.configureRequest(InvokeHTTP.java:814) ~[nifi-standard-processors-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
        at org.apache.nifi.processors.standard.InvokeHTTP.onTrigger(InvokeHTTP.java:613) ~[nifi-standard-processors-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
        at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27) [nifi-api-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
        at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1099) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
        at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:136) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
        at org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
        at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:132) [nifi-framework-core-1.1.0.2.1.1.0-2.jar:1.1.0.2.1.1.0-2]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_77]
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_77]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_77]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_77]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_77]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_77]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_77]

Error looks like header is missing. Below are the processor properties:

enter image description here enter image description here

I am able to hit the rest api from java client. Here's my code:

WebResource webResource = client.resource(siteUrl);
ClientResponse response1 = webResource.accept("application/json")
        .header("Authorization ","Token " + key)
        .get(ClientResponse.class);

Upvotes: 1

Views: 5416

Answers (1)

Bryan Bende
Bryan Bende

Reputation: 18670

This appears to be a legitimate bug which occurs under the following conditions:

  • GET request
  • No incoming connection to InvokeHttp
  • 'Put Response Body in Attribute' is not set

I believe you could work around the issue by using a GenerateFlowFile as the trigger for InvokeHttp.

Here is a JIRA I created for the issue, thanks for reporting this: https://issues.apache.org/jira/browse/NIFI-4399

Upvotes: 1

Related Questions