Support Questions
Find answers, ask questions, and share your expertise

Nifi InvokeHTTP to get a token from an API

I have curl command as below.

curl -s -XPOST -H "Accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d 'username=usco&password=asdl2342&client_id=dwer234324-2sd2-32dwq&scope=read' 'https://rest.abc.com/security'

I am trying to replicate this in Nifi. I am trying to figure out how and where the above options to be provided in InvokeHTTP processor. I have gone through the articles and some mentioned I have to define it in body of flow file. But I couldn't understand what exactly goes into body and what goes into extra attributes (if I need to add) in InvokeHTTP processsor.

1 ACCEPTED SOLUTION

Accepted Solutions

Re: Nifi InvokeHTTP to get a token from an API

@RC

Here is what I think you should use to make this work:

-X POST use processor HTTP method attribute and set to POST
-x http://proxyhost:portI think you should consider adding this configuration or add properties Proxy host=proxyhost, Proxy port=port and Proxy protocol=https
-H "Accept: application/json"Use the Attributes to send referencing a new attribute with the value (add 1 extra attributes with corresponding value)
-H "Content-Type: application/x-www-form-urlencoded"Use Content type attribute
-d 'data sent'Send Message Body = true. And the content should come as inbound flowfile to the processor. To test try adding a GenerateFlowFile processor with the content without single quotes
https://hostname/security/v1/oauth/tokenSet in Remote url

Finally since endpoint is ssl enabled you need to set SSL Context Service.

HTH

*** If you found this answer addressed your question, please take a moment to login and click the "accept" link on the answer.

View solution in original post

5 REPLIES 5

Re: Nifi InvokeHTTP to get a token from an API

@RC

Here is what I think you should use to make this work:

-X POST use processor HTTP method attribute and set to POST
-x http://proxyhost:portI think you should consider adding this configuration or add properties Proxy host=proxyhost, Proxy port=port and Proxy protocol=https
-H "Accept: application/json"Use the Attributes to send referencing a new attribute with the value (add 1 extra attributes with corresponding value)
-H "Content-Type: application/x-www-form-urlencoded"Use Content type attribute
-d 'data sent'Send Message Body = true. And the content should come as inbound flowfile to the processor. To test try adding a GenerateFlowFile processor with the content without single quotes
https://hostname/security/v1/oauth/tokenSet in Remote url

Finally since endpoint is ssl enabled you need to set SSL Context Service.

HTH

*** If you found this answer addressed your question, please take a moment to login and click the "accept" link on the answer.

View solution in original post

Re: Nifi InvokeHTTP to get a token from an API

Explorer

Attached is the screenshot for the solution 

E2E  FlowE2E FlowGenerate Flow FileGenerate Flow FileInvokeHttp.InvokeHttp.

Re: Nifi InvokeHTTP to get a token from an API

@Felix Albani

Thank you very much. that worked perfectly. I have one more question. What if I have one more header such as -H "Authorization: Bearer 27ffdfada34982-1123qwdq2" . How do I send it ?
Should I be adding one more property and set the name as 'Authorization and Value as Bearer 27ffdfada34982-1123qwdq2 ?

or

Can I specify more than one attribute in AttributestoSend in InvokeHTTP processor ? If yes, should they be seperated by comma or space or something else ?

Re: Nifi InvokeHTTP to get a token from an API

@RC Based on the documentation is a regular expression:

Regular expression that defines which attributes to send as HTTP headers in the request.

perhaps you can name your list of attributes:

httpheader1<br>httpheader2<br>httpheaderN

then use a regex like this httpheader[1-N]

HTH

Re: Nifi InvokeHTTP to get a token from an API

I have added Accept and Authorization in UpdateAttribute processor before InovkeHTTP processor and in the Attributes to Send property (in InovkeHTTP) - I have used .*