2016-08-24 1 views
0

Я пытаюсь получить доступ к службе WCF из браузера. Я отправляю запрос GET из моего браузера в службу WCF. Для вашей справки подробно следующая информация из службы WCF выглядит следующим образом.Настройка запроса GET от Nifi

Определение Сервисный договор заключается в следующем:

[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; 
    } 
} 

Когда я доступ к этому службы WCF из браузера с URL

http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel={"Pyro":"30.0","O2":"20.0"} 

Мой WCF служба успешно отвечает.

Однако, используя приведенный выше URL-адрес, когда я настраиваю процессор Nifi GeTHTTP, процессор является ошибкой незаконных символов в URL-адресе запроса GET.

Не могли бы вы посоветовать мне - какие изменения я должен внести в GET URL, используя GetHTTP-процессор?

ответ

2

Вам может понадобиться кодировать параметр inputModel, вы можете использовать метод UrlEncode из Nifi языка выражений:

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

Попробуйте это как свойство URL:

http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/json/?inputModel= $ {буквальным ("{\" Pyro \ ": \" 30.0 \ ", \" O2 \ ": \" 20.0 \ "}"): urlEncode()}

Кроме того, поскольку ваш URL исправлен, вы можете просто закодировать его, используя 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

+0

Спасибо за указателем. Я немного новичок в Nifi. Не могли бы вы посоветовать мне - как я должен использовать язык выражения. Какова будет значение свойства URL для процессора GetHTTP? – Pankesh

+0

Спасибо за указатели. Он работает сейчас! :) – Pankesh