Nedir?
REST Servisleri ile bağlantı kurmak için kullanılan servistir.
<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.
| |||||||
| IsMultipart | Eğer multipart formdata kullanılacaksa bu attribute değerinin True olması gerekir. | |||||||
| Formdatas | Formdata eklemek için bu alan kullanılı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.
<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
<JsonInvoke Url="http://localhost/ebidocs/Notification/GetNotifiedDocumentsInfo" InvokeType="Post" RequestNode="/*/Request" ResponseNode="/*/Response" ClearInto="False">
<Headers />
</JsonInvoke>
<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
<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ı
<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" />
Multipart-formdata kullanımı
<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" IsMultipart="True" IsHeadersEncoded="False" IsSerialize="False" Timeout="120" ContentType="application/json" Accept="application/json" IsResultJson="True">
<Headers />
<FormDatas>
<FormData Name="File" Type="File">$(GetFileContent)</FormData>
<FormData Name="Name" Type="Text">Test</FormData>
</FormDatas>
</JsonInvoke>
Ek Örnekler
<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>
