刚开始使用nifi。 有#" ListenHTTP"类型的http处理器听没有端口9090 需要在http://localhost:9090/端点上允许http POST 我无法找到任何可接受的http动词"这个处理器的Web UI中的设置,所以我猜 - 它需要在某种配置文件中指定。 我的问题是:那将是什么文件,以及指定这个的实际语法是什么? 我在网上看到了一些xml模板,但我不知道在哪里放一个。
答案 0 :(得分:6)
默认情况下,如果未指定备用基本名称,则 ListenHTTP 处理器的端点位于:
http://{hostname}:{port}/contentListener
因此,对于默认设置,您的请求应为:
curl --data "param1=value1¶m2=value2" localhost:9090/contentListener
有关处理器的完整文档,请访问ListenHTTP,或者如果该链接中断,请通过Nifi Documentation页面。
或者,如果您希望将端点限制为特定谓词,请考虑HandleHttpRequest和HandleHttpResponse的组合
答案 1 :(得分:0)
我相信默认会接受所有动词。我在端口9090上配置了一个空的“基本路径”属性的ListenHttp,并且能够使用curl成功地将数据POST到它。你有什么问题?
答案 2 :(得分:0)
ListenHTTP 处理器......
...启动HTTP服务器并侦听给定的基本路径进行转换 传入的请求进入FlowFiles。服务的默认URI将 是http:// {hostname}:{port} / contentListener。只有HEAD和POST 请求受支持。 GET,PUT和DELETE将导致错误 和HTTP响应状态代码405。
我已经能够使用PowerShell Invoke-WebRequest
发送到Nifi,但需要指定-ContentType:"application/x-www-form-urlencoded"
。此内容类型隐式设置在@apiri的答案中的curl
命令中。
以下示例有效,并且作为额外的奖励显示了如何包含将在结果流文件上设置属性的标头。请记住,您需要在处理器配置中将可选的 HTTP标头设置为属性(Regex)属性。
[PS] $HttpPost = @{
Uri = "http://{hostname}:{port}/contentListener"
Method = "POST"
ContentType = "application/x-www-form-urlencoded"
Headers = @{MyAttribute = "SomeValue"}
}
[PS] $Body = Get-Content <some_file> -Raw
[PS] Invoke-WebRequest @HttpPOST -Body:$Body
VERBOSE: POST http://{hostname}:{port}/contentListener with -1-byte payload
VERBOSE: received 0-byte response of content type text/plain
StatusCode : 200
StatusDescription : OK