从Nifi配置GET请求

时间:2016-08-24 15:51:31

标签: wcf http get apache-nifi

我正在尝试从浏览器访问WCF服务。我正在从浏览器向WCF服务发送GET请求。供您参考,WCF服务的详细信息如下。

服务合同定义如下:

    [ServiceContract]
    public interface IBZTsoftsensor_WcfService {

    [OperationContract]
   [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "json/?inputModel={inputModel}")]
      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;
  } 
 } 

当我使用网址

访问此浏览器的
http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel={"Pyro":"30.0","O2":"20.0"} 

我的WCF服务正在成功响应。

但是,使用上面的URL,当我配置GeTHTTP Nifi处理器时,处理器在GET请求URL中出错非法字符。

你可以告诉我 - 使用GetHTTP处理器时我在GET URL中做了哪些更改?

1 个答案:

答案 0 :(得分:2)

您可能需要对inputModel参数进行编码,您可以使用NiFi表达式语言的urlEncode方法:

https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#urlencode

尝试将此作为网址属性:

http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel= $ {文字( “{\” 的Pyro \ “:\” 30.0 \ “\ ”O2 \“:\ ”20.0 \“}”):用urlencode()}

或者,由于您的网址已修复,因此您只需使用online encoding tool对其进行编码即可,具体如下:

http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel=%7B%22Pyro%22%3A%2230.0%22%2C%22O2%22%3A%2220.0%22%7D%20