我正在尝试从浏览器访问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中做了哪些更改?
答案 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对其进行编码即可,具体如下: