我看到其他人已经能够让这个工作了但是我无法找到足够的细节来解释他们是如何完成这个以便我让它工作的。
This guy this link声称他能够做到这一点。虽然有关于如何执行此操作的简要说明,但我并不完全理解它。提出的解决方案是:
With InvokeHTTP, you can add dynamic properties, which will be sent in the
request as headers. You can use dynamic properties to set values for the
Content-Type and SOAPAction headers, just use the header names for the
names of the dynamic properties. InvokeHTTP lets you control the HTTP
method, so you can set that to POST. The remaining step would be to get
the content of request.xml to be sent to the InvokeHTTP as a flowfile. One
way to do this is to use a GetFile processor to fetch requeset.xml from
some location on the filesystem, and pass the success relationship of
GetFile to InvokeHTTP --Jeff.
我正在使用SOAPUI来验证一切正常,并且我正在获取适当的XML响应。但是我无法在NiFi中实现这一点。我的猜测是我不知道该怎么称呼我的动态属性。我还不完全理解我要添加到动态属性的Value
中的数据。
InvokeHTTP Processor Properties Screenshot
答案 0 :(得分:1)
我缺少的关键是需要将xml SOAP请求作为流文件内容而不是流文件属性发送。在我了解如何使用自定义内容创建流文件之前,花了一段时间。
使用InvokeHTTP
处理器发出SOAP请求的关键是InvokeHTTP处理器要求将xml SOAP请求作为流文件接收,因为当处理器发送http POST请求时将其作为SOAP请求的标头和传入的流文件内容作为SOAP主体发送。这需要一段时间才能理解,然后才能弄清楚如何自定义Flow文件的内容。
我最初的错误是我试图单独使用GenerateFlowFile
处理器并将其直接发送到InvokeHTTP处理器。这对我没有用,因为我不知道如何转换'文本'我将GenerateFlowFile动态属性作为内容放入。
最后,个人HERE通过使用ReplaceText
处理器转换我在GenerateFlowFile
处理器中创建的属性,如何创建包含自定义内容的流文件了解了我作为流文件内容。
最后,我使用了InvokeHTTP Processor所需的正确格式的Flow文件,以便发送/发送SOAP请求。
Flow的截图:
GenerateFlowFile和ReplaceText处理器的属性:
最后,我们只需要向InvokeHTTP
处理器添加一些动态属性,并将其与传入的流文件一起作为HTTP POST请求提交。同样,属性作为标题发送,传入的流文件内容作为BODY发送。这需要一点点理解,但是一旦你把这些部分放在一起并正确设置它就很容易。