如何通过InvokeHttp NiFi发送多部分/表单数据

时间:2018-08-20 10:55:10

标签: apache-nifi databricks kylo

我有一个第三方REST,我可以使用CURL(shell)成功地调用它。该API返回JSON。我尝试通过将内容类型更改为application/x-www-form-urlencoded来调用相同的API,但是它不起作用。我认为我被迫使用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

现在,我想使用InvokeHTTP处理器(NiFi)调用相同的API。因此,我将其配置如下。但是我无法成功拨打电话。 (这不是代理问题)。

enter image description here

enter image description here

以下是我如何创建POST正文(通过FF)

enter image description here

我尝试用\ r \ n等替换“ enter”,或将正文更改为name1=val1&name2=val2&....等。

这是我得到的答复。

[enter image description here]

我能够运行CURL(shell,运行Nifi的服务器)。我也可以通过邮递员访问网址。

[enter image description here]

2 个答案:

答案 0 :(得分:0)

最后,它奏效了。流有点像这样。

GenerateFlowFile->UpdateAttribute->AttributesToJSON->InvokeHTTP

只有更改,我对InvokeHTTP进行了更改。将内容类型恢复为$ {mime.type}。

答案 1 :(得分:0)

我为此苦苦挣扎了几个小时。我有一个具有

的后端 API

ResponseEntity<ByteArrayResource> post (@RequestPart("file") MultipartFile file) 和将 XLSX 数据发送到此的 NiFi 处理器。我遇到了同样的问题......对我来说关键是底部的两个属性:

FlowFile 表单数据名称 -> 文件(这是 API 调用中的变量名称)

设置 Flowfile 表单数据文件名 -> true