配置来自 Nifi 的 GET 请求
Configuring GET Request from 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;
}
}
当我使用 URL
从浏览器 访问此 WCF 服务时
http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel={"Pyro":"30.0","O2":"20.0"}
我的 WCF 服务响应成功。
但是,使用上述 URL,当我配置 GeTHTTP
Nifi 处理器时,处理器在 GET 请求 URL 中出错了非法字符。
你能告诉我吗 - 我必须在 GET URL 中做哪些更改,同时使用 GetHTTP 处理器?
您可能需要对您的inputModel参数进行编码,您可以使用NiFi表达式语言的urlEncode方法:
https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#urlencode
试试这个作为 URL 属性:
http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel=${literal("{\"Pyro\":\"30.0\",\"O2\":\"20.0\"}"):urlEncode()}
或者,由于您的 URL 是固定的,您可以使用 online encoding tool 对其进行编码,它给出如下内容:
我正在尝试从浏览器访问 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;
}
}
当我使用 URL
从浏览器 访问此 WCF 服务时http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel={"Pyro":"30.0","O2":"20.0"}
我的 WCF 服务响应成功。
但是,使用上述 URL,当我配置 GeTHTTP
Nifi 处理器时,处理器在 GET 请求 URL 中出错了非法字符。
你能告诉我吗 - 我必须在 GET URL 中做哪些更改,同时使用 GetHTTP 处理器?
您可能需要对您的inputModel参数进行编码,您可以使用NiFi表达式语言的urlEncode方法:
https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#urlencode
试试这个作为 URL 属性:
http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel=${literal("{\"Pyro\":\"30.0\",\"O2\":\"20.0\"}"):urlEncode()}
或者,由于您的 URL 是固定的,您可以使用 online encoding tool 对其进行编码,它给出如下内容: