【问题标题】:How to use invoke http to perform GET request in nifi?如何在 nifi 中使用调用 http 来执行 GET 请求?
【发布时间】:2019-01-03 14:59:24
【问题描述】:

我需要执行从 nifi 到 couchbase 的获取请求。 curl命令是:

curl http://HOST:PORT/query/service -d "statement=select item.Date from bucket unnest bucket as item" -u USER:PASSWORD

我尝试使用 InvokeHttp 和 ExecuteStreamCommand,但它不断返回错误(状态代码 400)。完整的错误信息是:

{ “requestID”:“bff62c0b-36fd-401d-bca0-0959e0944323”,“错误”: [{"code":1050,"msg":"No statement orprepared value"}], "status": “致命”,“指标”:{“elapsedTime”:“113.31µs”,“executionTime”: "74.321µs","re​​sultCount": 0,"resultSize": 0,"errorCount": 1

重要的是,我更喜欢 http 请求将由传入的流文件触发。我尝试以各种方式使用处理器,但没有一个起作用。 当我从 nifi 服务器运行命令时,它工作正常。

感谢您的帮助

【问题讨论】:

    标签: http curl get couchbase apache-nifi


    【解决方案1】:

    curl 实用程序的 -d 参数强制 HTTP POST 命令

    application/x-www-form-urlencoded mime-type。

    所以,在 nifi InvokeHTTP 中选择以下参数

    HTTP Method                   = POST
    Remote URL                    = <your url here>
    Basic Authentication Username = <username>
    Basic Authentication Password = <password>
    Content-Type                  = application/x-www-form-urlencoded
    

    并且流文件的主体应该是

    statement=select item.Date from bucket unnest bucket as item
    

    【讨论】:

    • 非常感谢,问题出在内容类型上!
    【解决方案2】:

    我不知道 nifi,但根据错误消息,请求的“statement=" 部分未包含在内,或者您没有将请求作为 POST 命令发送。

    【讨论】:

    • 是的,问题是我不知道如何配置处理器来包含数据。查看处理器文档,它说传入流文件的内容应该作为数据发送,但它不起作用
    猜你喜欢
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2016-11-19
    • 2011-03-24
    相关资源
    最近更新 更多