刚开始使用nifi。让一个"ListenHTTP“类型的http处理器侦听没有端口9090需要允许http://localhost:9090/端点上的http POST -我无法在这个处理器的Web中找到任何”可接受的http谓词“设置,所以我的猜测是-它需要在某种配置文件中指定。我的问题是:该文件是什么,具体具体的语法是什么?我已经在网上看到了一些xml模板,但我不知道该放在哪里。
发布于 2016-08-22 18:13:00
默认情况下,如果未指定其他基本名称,则ListenHTTP处理器的端点可在以下位置使用:
http://{hostname}:{port}/contentListener
因此,对于默认设置,您的请求应该是:
curl --data "param1=value1¶m2=value2" localhost:9090/contentListener
处理器上的完整文档可以在ListenHTTP或如果该链接中断时通过Nifi文档页面获得。
或者,如果您希望将端点限制在特定的动词上,请考虑HandleHttpRequest和HandleHttpResponse的组合。
发布于 2016-08-22 17:51:08
我相信在默认情况下它会接受所有的动词。我在端口9090上使用一个空的“基本路径”属性配置了ListenHttp,并且能够使用curl成功地将数据发送到它。你有什么问题?
发布于 2018-05-30 11:48:09
ListenHTTP处理器..。
..。启动HTTP并侦听给定的基本路径,将传入的请求转换为FlowFiles。服务的默认URI将是http://{hostname}:{port}/contentListener。只支持头请求和职位请求。GET、PUT和DELETE将导致错误和HTTP响应状态代码405。 -- Nifi文档,ListenHTTP 1.6.0
我已经能够使用PowerShell和Invoke-WebRequest
发布到Nifi,但需要指定-ContentType:"application/x-www-form-urlencoded"
。这个内容类型在@apiri的答案中的curl
命令中隐式设置。
下面的示例工作正常,并且作为一个额外的奖励,它显示了如何包含一个将在结果流文件上设置属性的头。请记住,您需要在处理器配置中设置可选的 Headers作为属性(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
https://stackoverflow.com/questions/39085439
复制相似问题