Thank you Joe James
-----Original Message----- From: Joe Percivall [mailto:[email protected]] Sent: Friday, December 18, 2015 3:34 PM To: Users Subject: [RMX:NL] Fw: [RMX:NL] Re: [RMX:NL] Re: [RMX:NL] Re: InvokeHTTP request parameters I accidentally replied to just James with one of my responses. Forwarding the thread back. - - - - - - Joseph Percivall linkedin.com/in/Percivall e: [email protected] On Friday, December 18, 2015 5:20 PM, Joe Percivall <[email protected]> wrote: Following this post[1] on sending and retrieving HTTP form data I believe I know what you want to do. The variables should be sent as the body of the POST request. The InvokeHttp processor POSTs whatever the content of the FlowFile is. You'll need to add a ReplaceText processor before InvokeHttp that replaces the entire content of the FlowFile with the value you want to send. The default configuration for the ReplaceText processor is to replace the entire contents so you should just be able to change the "Replacement Value" property to "Identifier=${MessageIdentifier}&Body=${MessageBody}". [1] https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/Sending_and_retrieving_form_data Sorry, I am not versed in the terminology for sending forms via HTTP but hope this works, Joe - - - - - - Joseph Percivall linkedin.com/in/Percivall e: [email protected] On Friday, December 18, 2015 5:03 PM, Burrows James A <[email protected]> wrote: This is what I currently have: Get a message from a kafka queue which may contain multiple messages in an array -> Split the messages into separate flow files -> Create some attributes from each message so I can access them (MessageIdentifier, MessageBody) -> POST the message to a rest api (Identifier=${MessageIdentifier}&Body=${MessageBody}) With the example template you provided it would be http://localhost/submit?Identifier=${MessageIdentifier}&Body=${MessageBody} for a GET request, but I need them to be in form variables since the rest api is a POST method IE. GET /submit?Identifier=${MessageIdentifier}&Body=${MessageBody} HTTP/1.1 Host: localhost Vs POST /submit HTTP/1.1 Host: localhost Identifier=${MessageIdentifier}&Body=${MessageBody} James -----Original Message----- From: Joe Percivall [mailto:[email protected]] Sent: Friday, December 18, 2015 2:51 PM To: Burrows James A Subject: Re: [RMX:NL] Re: [RMX:NL] Re: [RMX:NL] Re: InvokeHTTP request parameters The only parsing of the URL that InvokeHTTP does is analyze it for the protocol (http or https) and for expression language (EL), like had in the template (${q}). Aside from that, what ever URL is is where the request will be routed to. When you say variables, do you mean request headers? If so there are a couple different ways to add them that I can explain depending on how you want to configure it (attributes of the incoming flowfiles, same header every time, etc.). Sorry just having a little trouble figuring out what you mean but I'm happy to work through it with you, Joe - - - - - - Joseph Percivall linkedin.com/in/Percivall e: [email protected] On Friday, December 18, 2015 4:39 PM, Burrows James A <[email protected]> wrote: Is it supposed to parse out the query string from the url, and convert the parameters to form variables? I tried converting the method to POST, but they still came across as GET parameters. Thanks again, I've been stuck on this for days. James -----Original Message----- From: Joe Percivall [mailto:[email protected]] Sent: Friday, December 18, 2015 2:32 PM To: Burrows James A Subject: Re: [RMX:NL] Re: [RMX:NL] Re: [RMX:NL] Re: InvokeHTTP request parameters Awesome! Glad to hear that fixed it and sorry I linked you to an incorrect template. For other HTTP methods just change the "HTTP Method" property to your desired method. Joe - - - - - - Joseph Percivall linkedin.com/in/Percivall e: [email protected] On Friday, December 18, 2015 4:28 PM, Burrows James A <[email protected]> wrote: Thanks for updating the template it worked perfect for GET methods. I'm now curious how I would do the same thing for POST,PUT,DELETE methods? James -----Original Message----- From: Joe Percivall [mailto:[email protected]] Sent: Friday, December 18, 2015 1:58 PM To: [email protected] Subject: [RMX:NL] Re: [RMX:NL] Re: [RMX:NL] Re: InvokeHTTP request parameters Apparently that template doesn't actually do what it said it did. It wasn't using the "q" attribute in the URL so it was just hitting google without any query. I just pushed out a change to the repo which fixes it to properly hit "http://www.google.com/search?q=${q}&rct=j" where the ${q} is replace with the attribute that's created in the previous processor. The "rct=j" was just part of the url when I did manual google search in my browser and allowed me to do the search in NiFi as well. I'll be changing on Confluence as well. Sorry about that, Joe - - - - - - Joseph Percivall linkedin.com/in/Percivall e: [email protected] On Friday, December 18, 2015 3:32 PM, Burrows James A <[email protected]> wrote: Yes the HTTP call being generated is sending without the query string values. For the configuration of my InvokeHTTP I used that template, but changed the remote URL to point to my server (https://www.google.com -> http://localhost). James -----Original Message----- From: Joe Percivall [mailto:[email protected]] Sent: Friday, December 18, 2015 1:25 PM To: [email protected] Subject: [RMX:NL] Re: [RMX:NL] Re: InvokeHTTP request parameters Yeah I compiled from the wiki as well. I want to get a listing of as many templates as possible so when someone needs an example template I/we can check the excel doc to see which processors are used in which template. Still working on generating more content though. Are you saying that the HTTP call you're generating in InvokeHttp is arriving at the server without any query string values? If that's the case and you're able, can you reply with your InvokeHttp config? Joe - - - - - - Joseph Percivall linkedin.com/in/Percivall e: [email protected] On Friday, December 18, 2015 3:16 PM, Burrows James A <[email protected]> wrote: Thanks for the reply. That appears the be the same template from the wiki, and it seems like it should work, but when I get the request on the server there are no querystring values. -----Original Message----- From: Joe Percivall [mailto:[email protected]] Sent: Friday, December 18, 2015 12:58 PM To: [email protected] Subject: [RMX:NL] Re: InvokeHTTP request parameters Hello James, I'm actually working on repo that includes many different templates. There are a few that have InvokeHttp in them (can find the exact ones using the excel doc at the top level) but this is a simple one that uses InvokeHttp: https://github.com/hortonworks-gallery/nifi-templates/blob/master/templates/InvokeHttp_And_Route_Original_On_Status.xml Does that fit your use-case? Joe - - - - - - Joseph Percivall linkedin.com/in/Percivall e: [email protected] On Friday, December 18, 2015 2:52 PM, Burrows James A <[email protected]> wrote: I’m wondering if anyone has a sample, or tutorial on how to configure the InvokeHTTP request parameters. I see that you can configure the request headers using the Attributes to Send property, but I need to be able to specify the request parameters to integrate with a rest api. Thanks, James
