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

UrlRequest yapılacak remote web servis adresidir.

ResponseNodeResponse 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


HeadersSOAP 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.


Değer
Açıklama

ValueCDATA  content veya Node adresi olabilir.



Ö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>


Ayrıca Bakınız

WebInvoke

  • No labels