Как отправить 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