1

我有一个第 3 方 REST,我可以使用 CURL(shell)成功地调用它。此 API 返回 JSON。我尝试通过将内容类型更改为来调用相同的 API,application/x-www-form-urlencoded但它不起作用。我想我被迫使用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。所以我配置如下。但我无法成功拨打电话。(这不是代理问题)。

在此处输入图像描述

在此处输入图像描述

以下是我创建 POST 正文的方式(由 FF 提供)

在此处输入图像描述

我尝试用 \r\n 等替换“输入”,或更改正文name1=val1&name2=val2&....等。没有任何效果。

这是我得到的回应。

[在此处输入图像描述]

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

[在此处输入图像描述]

4

2 回答 2

0

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

GenerateFlowFile->UpdateAttribute->AttributesToJSON->InvokeHTTP

唯一的改变,我对 InvokeHTTP 做了。将内容类型恢复为 ${mime.type}。

于 2018-08-21T07:54:43.983 回答
0

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

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

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

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

于 2021-06-29T19:06:59.253 回答