从Nifi配置HTTP POST请求

时间:2016-08-24 06:38:36

标签: wcf http-post apache-nifi

我正在尝试从REST客户端访问WCF服务。我正在从REST客户端向WCF服务发送POST请求。供您参考,详情如下。

服务合同定义如下:

[ServiceContract]
public interface IBZTsoftsensor_WcfService {

[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json,  ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/data")]
   string ExecuteModelJson(string inputModel);
}

此接口的实现如下:

public string ExecuteModelJson(string inputModel){
  try
  {
    BZTsoftsensor_ModelInput input =   JsonConvert.DeserializeObject<BZTsoftsensor_ModelInput>(inputModel);
  var results = this.ExecuteModel(input);
  return JsonConvert.SerializeObject(results);
  }
  catch (Exception ex)
  {
    return ex.Message;
  } 
 }

从REST客户端,我按如下方式请求此WCF服务:

enter image description here 作为扩展,我必须从NiFi处理器访问此WCF服务。 您能否告诉我如何在Nifi中配置处理器以访问此WCF服务?在Nifi处理器中,有一个POSTHTTP处理器(文档:https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.standard.PostHTTP/index.html)可用,但我想知道如何配置它?

或者可能还有其他处理器可供使用invokeHTTP ?? (文件:https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi.processors.standard.InvokeHTTP/index.html

我试过配置invokeHTTP处理器。以下是配置参数。但是,我无法访问WCF服务。

enter image description here 更多的参数如下: enter image description here

1 个答案:

答案 0 :(得分:2)

InvokeHttp处理器使用流文件的内容作为tye请求的主体。 在invokeHttp之前必须有一个处理器来设置流文件的内容,例如replaceText处理器。

也不要忘记在invokeHttp处理器中将属性'send message body'设置为'true'