Nedir?
REST Servisleri ile bağlantı kurmak için kullanılan servistir.
Sentaks
<JsonInvoke Url="" InvokeType="Post" RequestNode="/*/Request" ResponseNode="/*/Response" ClearInto="False"> <Headers /> </JsonInvoke>
Özellikler
Adı | Açıklama | |||||||
---|---|---|---|---|---|---|---|---|
Url | Request yapılacak remote web servis adresidir. | |||||||
ResponseNode | Response olarak dönen objenin yazılacağı node adresidir. XPath alır. | |||||||
InvokeType | Request yapılırkan hangi http method kullanılacağını belirler. "Get" veya "Post" olabilir. Veri alınması durumunda "Get", Veri gönderilmesi durumunda "Post" kullanılmalıdır. | |||||||
ClearInto | Var olan verinin silinip silinmeyeceği konusunda | |||||||
Headers | SOAP Header bilgisini geçmek için kullanılabilir, opsiyoneldir. | |||||||
RequestNode | Request yapılacak objenin tanımlı olduğu node adresi veya string içeriğidir. XPath alır.
|
Örnek (Get Metodu)
JsonInvoke taskına verilen Url üst satırda SetVariable ile $(JsonUrl) değişkenine atanıyor. Geri dönecek olan yanıt Json/Response node 'u içerisine aktarılmaktadır.
JsonTest
<SetVariable Name="$(JsonUrl)"> <Value Culture="" Target="None">eval::/*/Baslatan/JsonUrl</Value> </SetVariable> <JsonInvoke Url="$(JsonUrl)" InvokeType="Get" RequestNode="Json/Request" ResponseNode="Json/Response" ClearInto="True" IsHeadersEncoded="False" IsSerialize="True" Timeout="120" ContentType="application/json" Accept="application/json" IsResultJson="True"> <Headers /> </JsonInvoke>
Örnek
Kullanım
<JsonInvoke Url="http://localhost/ebidocs/Notification/GetNotifiedDocumentsInfo" InvokeType="Post" RequestNode="/*/Request" ResponseNode="/*/Response" ClearInto="False"> <Headers /> </JsonInvoke>
Dönen değerlerin alınması
<ForEach Node="/*/Response/Response/NotificationList"> <SetVariable Name="$(DocumentName)"> <Value>eval::./DocumentName</Value> </SetVariable> <SetVariable Name="$(FieldName)"> <Value>eval::./FieldName</Value> </SetVariable> <SetVariable Name="$(FieldDate)"> <StringConcat> <DateTimePart Part="Day"> <Value Target="Date">eval::./FieldDate</Value> </DateTimePart> <Value>.</Value> <DateTimePart Part="Month"> <Value Target="Date">eval::./FieldDate</Value> </DateTimePart> <Value>.</Value> <DateTimePart Part="Year"> <Value Target="Date">eval::./FieldDate</Value> </DateTimePart> </StringConcat> </SetVariable> </ForEach>
Login ile birlikte örnek
Login işlemleri ile birlikte
<SetVariable Name="$(LoginURL)"> <StringConcat> <Value Culture="" Target="None">$(APIURL)</Value> <Value Culture="" Target="None">auth/oauth2/token</Value> </StringConcat> </SetVariable> <Set Node="DYSAPI/Login/Request"> <StringConcat> <Value Culture="" Target="None" IsCDATA="True"><![CDATA[username=]]></Value> <Value Culture="" Target="None">$(APIUser)</Value> <Value Culture="" Target="None" IsCDATA="True"><![CDATA[&password=]]></Value> <Value Culture="" Target="None">$(APIPassword)</Value> <Value Culture="" Target="None" IsCDATA="True"><![CDATA[&grant_type=password&client_id=]]></Value> <Value Culture="" Target="None">099153c2625149bc8ecb3e85e03f0022</Value> </StringConcat> </Set> <JsonInvoke Url="$(LoginURL)" InvokeType="Post" RequestNode="API/Login/Request" ResponseNode="API/Login/Result" ClearInto="False" IsHeadersEncoded="False" IsSerialize="False" Timeout="100" ContentType="application/x-www-form-urlencoded" Accept="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" IsResultJson="True"> <Headers /> </JsonInvoke>
Örnek Kullanımı
Restfull bir servisi giriş token'ı ile çağırma örneği
<JsonInvoke Url="https://prod.holding.com.tr/payment/v1/get/Payment" InvokeType="Get" RequestNode="GetPayment/Request" ResponseNode="GetPayment/Response" ClearInto="True" IsHeadersEncoded="False" IsSerialize="True" Timeout="100" ContentType="application/json" Accept="application/json" IsResultJson="True"> <Headers> <Header Key="Authorization">Basic Zm9ybS5lc2lnbmF0dXJlLmVndXZlbjo2bjFiQkJWUVdqNXE4Zngx</Header> </Headers> </JsonInvoke>
Sisteme dahil olmayan ITASK için Dll üzerinden çağırma
<Using Name="JsonInvoke" Type="EBI.ExtraFunctions.JsonInvoke,EBI.ExtraFunctions" />
Ek Örnekler
Form Üzerinden login servisini çağırarak kullanıcının ad ve şifre bilgisinin doğru olup olmadığı kontrolü için kullanılır. Result node'u içerisinde token bilgisi var ise bilgiler ile login olunabiliyor demektir. Form üzerindeki bilgiyi görmesi için tekrar kullanıcı adı ve şifre girilmesi için kullanılabilir.
<If> <Then> <Condition> <And> <Not> <IsEmpty> <Evaluate Target="None" Culture=""><![CDATA[Login/UserName]]></Evaluate> </IsEmpty> </Not> <Not> <IsEmpty> <Evaluate Target="None" Culture=""><![CDATA[Login/Password]]></Evaluate> </IsEmpty> </Not> </And> </Condition> <Perform> <Try> <Tasks> <SetVariable Name="$(UserName)"> <Evaluate Target="None" Culture=""><![CDATA[Login/UserName]]></Evaluate> </SetVariable> <SetVariable Name="$(Password)"> <Evaluate Target="None" Culture=""><![CDATA[Login/Password]]></Evaluate> </SetVariable> <JsonInvoke Url="http://ebiflow3/json.aspx?otype=token" InvokeType="Post" RequestNode="API/Request" ResponseNode="API/Result" ClearInto="False" IsHeadersEncoded="False" IsSerialize="True" Timeout="100" ContentType="application/json" Accept="application/json" IsResultJson="True"> <Headers> <Header Key="EBIFLOWUSERNAME">$(UserName)</Header> <Header Key="EBIFLOWUSERPASSWORD">$(UserName)</Header> </Headers> </JsonInvoke> </Tasks> <Catch /> <Finally /> </Try> </Perform> </Then> </If>
<SetVariable Name="$(SMSBody)"> <Evaluate Target="None" Culture="">/*/MusteriGeribildirim /Sablon</Evaluate> </SetVariable> <Set Node="/*/SMS/Request/MainmsgBody/Mesgbody"> <Value>$(SMSBody)</Value> </Set> <Set Node="/*/SMS/Request/MainmsgBody/Numbers"> <Value>$(Numbers)</Value> </Set> <Try> <Tasks> <JsonInvoke Url="http://8bit.mobilus.net/" InvokeType="Post" RequestNode="/*/SMS/Request" ResponseNode="/*/SMS/Response" ClearInto="False" IsHeadersEncoded="False" IsSerialize="False" Timeout="100" ContentType="application/xml" Accept="application/xml" IsResultJson="False" IgnoreCertErrors="False"> <Headers /> </JsonInvoke> </Tasks> <Catch> <Set Node="/*/SMS/Response/Message"> <String> <Value>$(Exception)</Value> </String> </Set> </Catch> </Try>
<Try> <Tasks> <Set Node="/*/returnnode"> <Value IsCDATA="True">{"FileName": "test.pdf","PhoneNumber": "0"}</Value></Set> <JsonInvoke Url="https://via-service.test.com/Task" InvokeType="Post" RequestNode="/*/returnnode" ResponseNode="/*/WebServisReturnResult" ClearInto="True" IsHeadersEncoded="False" IsSerialize="False" Timeout="100" ContentType="application/json" Accept="application/json" IsResultJson="True" IgnoreCertErrors="False"> <Headers /> </JsonInvoke> </Tasks> <Catch> <Set Node="/*/WebServisReturnResult/transactionUUID"> <String><Value IsCDATA="True">$(Exception)</Value></String> </Set> </Catch> </Try>