Rakesh Prasad
Rakesh Prasad

Reputation: 642

how to send multipart/form-data via InvokeHttp NiFi

I have a 3rd party REST, which I am successfully able to call like this using CURL (shell). This API return JSON. I tried calling same API, by changing content type to application/x-www-form-urlencoded but it doesn't work. I think I am forced to use content-type: multipart/form-data

curl --request POST --url https://************************* --header 'Authorization: Bearer ********'  --header 'content-type: multipart/form-data; ' --form cluster_id=0717-035521-puny598 --form start_time=1534357800000 --form end_time=1534444199999 --form order=ASC --form limit=500

Now I want to call same API using InvokeHTTP processor (NiFi). So I configured it as follows. But I am not able to do a successful call. (it is not a proxy issue).

enter image description here

enter image description here

Following is how I am creating POST body (by FF)

enter image description here

I have tried replacing "enter" by \r\n etc, or changing body as name1=val1&name2=val2&.... etc. nothing worked.

This is the response I am getting.

[enter image description here]

I am able to run CURL (shell, from same server where Nifi is running). Also I am able to access url via postman.

[enter image description here]

Upvotes: 2

Views: 5001

Answers (2)

Rakesh Prasad
Rakesh Prasad

Reputation: 642

Finally, it worked. The flow is somewhat like this:

GenerateFlowFile -> UpdateAttribute -> AttributesToJSON -> InvokeHTTP

The only change, I made to InvokeHTTP reverted content-type back to ${mime.type}.

Upvotes: 0

Bradley Ploof
Bradley Ploof

Reputation: 1

I was struggling with this for a few hours. I've got a backend API that has

ResponseEntity<ByteArrayResource> post (@RequestPart("file") MultipartFile file) and a NiFi processor that sends XLSX data to this. I was getting the same issue... The key for me were the bottom two properties:

FlowFile Form Data Name -> file (this is the name of the variable in the API call)

Set Flowfile Form Data File Name -> true

Upvotes: 0

Related Questions