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

问题描述 投票:0回答:2

我有一个第三方 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

我尝试将“输入”替换为 等等,或者改变身体如

name1=val1&name2=val2&....
等,但没有任何效果。

这是我得到的回复。

[enter image description here]

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

[enter image description here]

apache-nifi databricks kylo
2个回答
0
投票

我为此苦苦挣扎了几个小时。 我有一个后端 API,其中有

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

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

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


0
投票

终于成功了。流程有点像这样:

GenerateFlowFile -> UpdateAttribute -> AttributesToJSON -> InvokeHTTP

唯一的更改是,我将 InvokeHTTP 恢复为

content-type
    

© www.soinside.com 2019 - 2024. All rights reserved.