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>