我看到其他人已经能够使其发挥作用,但是我无法找到足够的详细信息来解释他们如何实现这一目标,以便我能够使其发挥作用。
This guy http://apache-nifi-developer-list.39713.n7.nabble.com/SOAP-Service-through-InvokeHTTP-td13129.html at 这个链接 http://apache-nifi-developer-list.39713.n7.nabble.com/SOAP-Service-through-InvokeHTTP-td13129.html声称他能够做到这一点。虽然有关于如何执行此操作的简短描述,但我并不完全理解。
提出的解决方案是:
使用 InvokeHTTP,您可以添加动态属性,这些属性将作为标头在请求中发送。您可以使用动态属性来设置 Content-Type 和 SOAPAction 标头的值,只需使用标头名称作为动态属性的名称即可。 InvokeHTTP 允许您控制 HTTP 方法,因此您可以将其设置为 POST。剩下的步骤是获取 request.xml 的内容作为流文件发送到 InvokeHTTP。实现此目的的一种方法是使用 GetFile 处理器从文件系统上的某个位置获取 requeset.xml,并将 GetFile 的成功关系传递给 InvokeHTTP
--Jeff.
我正在使用 SOAPUI 来验证一切是否正常,并且在我收到适当的 XML 响应时它确实有效。然而我无法在 NiFi 中实现这一点。我的猜测是我不知道如何称呼我的动态属性。我也不完全明白我要添加哪些数据Value
我的动态属性。
调用HTTP处理器属性屏幕截图:
这里我遗漏的关键是需要将 xml SOAP 请求作为流文件内容而不是流文件属性发送。我花了一段时间才了解如何创建具有自定义内容的流文件。
关键是使用InvokeHTTP
处理器发出 SOAP 请求是 InvokeHTTP 处理器接收作为流文件形式的 xml SOAP 请求的要求,因为当处理器发送 http POST 请求时,它会发送它的属性作为 SOAP 请求的标头和传入的流文件内容作为 SOAP 主体。这需要一段时间才能理解,然后才弄清楚如何自定义流文件的内容。
我最初的错误是我尝试使用GenerateFlowFile
处理器本身并将其直接发送到 InvokeHTTP 处理器。这对我来说不起作用,因为我不知道如何将放置到GenerateFlowFile动态属性中的“文本”转换为内容。
终于有个人了HERE https://www.mail-archive.com/dev@nifi.apache.org/msg14218.html告诉我如何使用自定义内容创建流文件ReplaceText
处理器来转换我在中创建的属性GenerateFlowFile
处理器作为流文件内容。
最后,我获得了 InvokeHTTP 处理器发送/POST SOAP 请求所需的正确格式的流文件。
流程截图:
GenerateFlowFile 和 ReplaceText 处理器的属性:
最后我们只需要添加一些动态属性到InvokeHTTP
处理器并将其与传入的流文件一起作为 HTTP POST 请求提交。同样,属性作为标头发送,传入的流文件内容作为正文发送。这需要一点时间来理解,但是一旦您将各个部分组合在一起并正确设置,就会变得非常容易。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)