Как отправить multipart/form-данные через InvokeHttp NiFi

У меня есть сторонний 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

Теперь я хочу вызвать тот же API с использованием процессора InvokeHTTP (NiFi). Поэтому я настроил это следующим образом. Но я не могу сделать успешный звонок. (это не проблема прокси).

Вот как я создаю тело POST (автор FF)

Я попытался заменить "enter" на \r\n и т. Д. Или изменил тело как name1=val1&name2=val2&.... и т.д. ничего не получалось.

Это ответ, который я получаю.

[

Я могу запустить CURL (оболочку, с того же сервера, где работает Nifi). Также я могу получить доступ к URL через почтальона.

[

3 ответа

Решение

Наконец, это сработало. поток примерно такой.

GenerateFlowFile->UpdateAttribute->AttributesToJSON->InvokeHTTP

Единственное изменение, которое я внес в InvokeHTTP. возвратил тип контента обратно в ${mime.type}.

Ракеш,

Вы должны использовать поток ниже, чтобы вызвать HTTP.

использование GenerateFlowFile --> UpdateAttribute --> InvokeHTTP

GenerateFlowFile - это фиктивный процессор, который просто запускает фактический поток данных.

UpdateAttribute:

Здесь вы можете указать параметры multipart / form-data,

cluster_id: <clusterID>
start_time : <startTime>
end_time:<endTime>
....etc

InvokeHTTP Здесь вы просто указываете эти атрибуты в атрибуте для отправки с существующей конфигурацией.

Attributes To Send: cluster_id,start_time....etc

с вашей существующей конфигурацией.

Надеюсь, это будет полезно для вас.

Пожалуйста, дайте мне знать, если у вас возникнут проблемы.

Я боролся с этим несколько часов. У меня есть серверный API, в котором есть

ResponseEntity<ByteArrayResource> post (@RequestPart("file") MultipartFile file)и процессор NiFi, который отправляет на него данные XLSX. У меня была такая же проблема ... Ключевыми для меня были два нижних свойства:

Имя данных формы FlowFile -> файл (это имя переменной в вызове API)

Установить имя файла данных формы Flowfile -> true

Другие вопросы по тегам