COM Client Dökümantasyon
Bu dökümanda geçen kod örnekleri Vba programlama dili ve Excel Macro’lar üzerinde örneklendirilmiştir. Method tanımları için dönüt tipi ve parametre tipleri C programlama dili sözdizimindedir.
Vba COM Interop kısıtlamaları
- Vba COM objeleri yaratılırken contructor’a parametre geçilmesini desteklemez. Bu sebeple Com Client kütüphanesi constructor’ı parametre alan sınıflarına bu özelliği Init metodu ile desteklemiştir. Objeler yaratıldıktan sonra gerekli parametreler bu metodla gönderilir.
- COM Client kütüphanesin’deki herhangi bir sınıfın herhangi bir metodu kullanılırken parametre ve parameteler yine COM Client kütüphanesindeki sınıflardan birinin tipinde ise, bu parametreler referans olarak gönderilmelidir.
ComManager
ComManager sınıfı REST API’ya HTTP request’ler yapılmasını sağlar.
ComManager objesi nasıl yaratılır?
Set ComManager = CreateObject("NetOpenX.Rest.COMClient.BLL.ComManager")
Metotlar
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void Init(string serviceUri);
Init metodu ComManager sınıfının constructor’ı yerine geçer. Obje instantiate edildikten sonra mutlaka bu metod kullanılarak REST API’nın çalıştığı url parametre olarak geçilmelidir.
Örnek
ComManager.Init ("http://localhost:7070")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string LogIn(string branchCode, string netsisUser, string netsisPassword, string dbType, string dbName, string dbPassword, string dbUser);
LogIn metodu RESTFUL Api’ya girişi sağlar. Parametreler size sağlanan giriş bilgileri olmalıdır. Başarılı giriş yapıldığında Access Token cevap olarak dönülür.
Örnek
token = ComManager.LogIn("0", "netsisUser", "netsisPassword", "vtMSSQL", "dbName", "dbPassword", "dbUser")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
bool LogOut();
LogOut metodu RESTFUL Api’dan çıkışı sağlar. Başarılı çıkış durumunda dönüt true, başarısız da ise false olur.
Örnek
result = ComManager.LogOut
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string AccessToken();
Giriş yapıldıysa Access Token değerini string tipinde döner, yapılmadıysa boş string döner.
Örnek
token = ComManager.AccessToken
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string Json();
Son yapılan HTTP request’ten dönen cevabı string tipinde ve JSON formatında döner.
Örnek
json = ComManager.Json
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string Request(string url, string input, string method, string transId);
REST servise HTTP request gönderir.
Parametreler
- string url: REST servisin bulunduğu url’e eklenecektir. Bu url’e belirtilen HTTP request yapılır.
- string input : Request tipi bir input gerektiriyorsa eklenmelidir. Gerekmiyorsa boş string gönderilmelidir.
- string method : Method, HTTP request tiplerinden biri “GET, POST, PUT, DELETE” olmalıdır.
- string transId : Eğer transaction başlatıldıysa transaction ID eklenmelidir. Gerekmiyorsa boş string gönderilmelidir.
Dönüt
JSON formatında string tipinde bir cevap dönülür.
REST servisin çalıştığı url’e /Help ekleyerek daha sonra attığınız request sayfasına giderek dönen JSON formatındaki string değerinin nasıl bir yapıda olduğunu görebilirsiniz. Bu JSON’ın nasıl ayrıştırılması gerektiğini anlamak için önemlidir.
Örnek
jsonstring = ComManager.Request("api/v2/ARPs?limit=1000", "", "GET", "")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string QueryRequest(string query);
REST servise SQL sorguları gönderir. SQL sorguları sadece SELECT olabilir.
Parametre
- string query: SQL sorgu cümlesi.
Dönüt
JSON formatında string tipinde bir cevap dönülür.
REST servisin çalıştığı url’e /Help ekleyerek daha sonra attığınız request sayfasına giderek dönen JSON formatındaki string değerinin nasıl bir yapıda olduğunu görebilirsiniz. Bu JSON’ın nasıl ayrıştırılması gerektiğini anlamak için önemlidir.
Örnek
jsonstring = ComManager.QueryRequest("SELECT TOP 10 * FROM TBLCASABIT")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ComJObject
COMJObject sınıfı JSON’ları ayrıştırmak ve JSON değerleri oluşturmak için kullanılır.
ComJObject objesi nasıl yaratılır?
Set ComJObject = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
Metotlar
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void LoadFromString(string json);
JSON formatındaki bir string değeriyle obje JSON formatında yapılandırılır. String tipindeki JSON ayrıştırılabilir bir forma dönüşür.
Örnek
jsonstring = ComManager.QueryRequest("SELECT TOP 10 * FROM TBLCASABIT")
Set ComJObject = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
ComJObject.LoadFromString (jsonstring)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string ConvertToString();
JSON yapısındaki objeyi string tipinde döner.
Örnek
Set JArps = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSuppInfo.PutString("TcKimlikNo", "11111111111")
jsonstring = JArps.ConvertToString
respond = ComManager.Request("api/v2/ARPs", jsonstring, "POST", "")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string GetString(string key);
Eğer mevcutsa verilen key’deki string değeri döner.
Örnek
Set JArps = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JArps.PutString("TcKimlikNo", "11111111111")
value = JArps.GetString("TcKimlikNo") 'value 11111111111 olacak
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int GetInteger(string key);
Eğer mevcutsa verilen key’deki integer değeri döner.
Örnek
Set JArps = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JArps.PutInteger("SubeNo", 11111111111)
value = JArps.GetInteger("SubeNo") 'value 11111111111 olacak
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
double GetDouble(string key);
Eğer mevcutsa verilen key’deki double değeri döner.
Örnek
Set JArps = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JArps.PutDouble("CM_ALACT", 5.5)
value = JArps.GetDouble("CM_ALACT") 'value 5.5 olacak
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ComJObject GetJObject(string key);
Eğer mevcutsa verilen key’deki COMJObject değeri döner.
Örnek
Set JSupp = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSupp.PutDouble("CM_ALACT", 5.5)
Set JArps = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JArps.PutComJObject("Supp_Info", (JSupp))
value = JArps.GetComJObject("Supp_Info") 'value JSupp olacak
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ComJArray GetJArray(string key);
Eğer mevcutsa verilen key’deki COMJArray değeri döner.
Örnek
Set JSupp = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSupp.PutDouble("CM_ALACT", 5.5)
Set JArr = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJArray")
JArr.AddComJObject((Jsupp))
value = JArps.GetJObjectAt(0) 'value JSupp olacak
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void PutString(string key, string value);
Objeye verilen key ve string tipindeki value değerini ekler.
Örnek
Set JSupp = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSupp.PutString("Name", "name")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void PutInteger(string key, int value);
Objeye verilen key ve int tipindeki value değerini ekler.
Örnek
Set JSupp = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSupp.PutInteger("Number", 5)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void PutDouble(string key, double value);
Objeye verilen key ve double tipindeki value değerini ekler.
Örnek
Set JSupp = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSupp.PutDouble("Number", 5.5)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void PutComJObject(string key, ComJObject value);
Objeye verilen key ve ComJObject tipindeki value değerini ekler. Value parametresi referans olarak geçilmelidir.
Örnek
Set JSupp = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSupp.PutDouble("Number", 5.5)
Set JArps = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JArps.PutComJObject("supp", (JSupp))
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void PutComJArray(string key, ComJArray value);
Objeye verilen key ve ComJArray tipindeki value değerini ekler. Value parametresi referans olarak geçilmelidir.
Örnek
Set JSupp = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSupp.PutDouble("Number", 5.5)
Set JArr = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJArray")
a = JArr.AddComJObject((JSupp))
Set JArps = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JArps.PutComJArray("arr", (jArr))
ComJArray
ComJArray, ComJObject tipindeki objeleri indeksli ve sıralı bir şekilde içerir. Array indeksi 0’dan başlayıp ardışık bir şekilde artarak ilerler.
ComJArray objesi nasıl yaratılır?
Set JArr = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJArray")
Metotlar
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ComJObject GetJObjectAt(int index)
Eğer varsa, objenin index parametresindeki ComJObject objesini getirir.
Örnek
Set JArr = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJArray")
Set JObj = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JObj.PutString("Name", "name")
a = JArr.AddComJObject((JObj))
a = JArr.GetJObjectAt(0) 'a JObj olacak
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void AddComJObject(ComJObject jObject)
Objenin sıradaki indeksine yeni bir ComJObject ekler.
Örnek
Set JArr = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJArray")
Set JObj = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JObj.PutString("Name", "name")
a = JArr.AddComJObject((JObj))
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int Count()
Objenin içindeki ComJObject objeleri sayısını getirir.
Örnek
Set JArr = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJArray")
Set JObj = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JObj.PutString("Name", "name")
a = JArr.AddComJObject((JObj))
count = JArr.Count 'count 1 olacak
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Örnek bir Vba
Login, Logout, HTTP Request, JSON ayrıştırma ve oluşturma örnek kodlar. Veriler Excel hücrelerinden okunup yazılıyor.
Public ws As Worksheet
Public ComManager
Sub LogIn_Click()
Set ws = Worksheets("Sheet1")
Set ComManager = CreateObject("NetOpenX.Rest.COMClient.BLL.ComManager")
ComManager.Init ("http://localhost:7070")
token = ComManager.LogIn(ws.Cells(1, 1).Value, ws.Cells(1, 2).Value, ws.Cells(1, 3).Value, ws.Cells(1, 4).Value, ws.Cells(1, 5).Value, ws.Cells(1, 6).Value, ws.Cells(1, 7).Value)
MsgBox (token)
End Sub
Sub LogOut_Click()
MsgBox (ComManager.LogOut)
End Sub
Sub GetArps_Click()
jsonstring = ComManager.Request("api/v2/ARPs?limit=1000", "", "GET", "")
Set ComJObject = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
ComJObject.LoadFromString (jsonstring)
Set Data = ComJObject.GetJArray("Data")
MsgBox (Data.Count())
Columns(1).NumberFormat = "@"
Columns(2).NumberFormat = "@"
Columns(3).NumberFormat = "@"
Columns(4).NumberFormat = "@"
Columns(5).NumberFormat = "@"
Columns(6).NumberFormat = "@"
Columns(7).NumberFormat = "@"
Columns(8).NumberFormat = "@"
Columns(9).NumberFormat = "@"
Columns(10).NumberFormat = "@"
For i = 0 To Data.Count - 1
Set DataElem = Data.GetJObjectAt(i)
Set JMainInfo = DataElem.GetJObject("CariTemelBilgi")
ws.Cells(i + 7, 1).Value = JMainInfo.GetInteger("Sube_Kodu") 'A
ws.Cells(i + 7, 2).Value = JMainInfo.GetInteger("ISLETME_KODU") 'B
ws.Cells(i + 7, 3).Value = JMainInfo.GetString("CARI_KOD") 'C
ws.Cells(i + 7, 4).Value = JMainInfo.GetString("CARI_TEL") 'D
ws.Cells(i + 7, 5).Value = JMainInfo.GetString("CARI_IL") 'E
ws.Cells(i + 7, 6).Value = JMainInfo.GetString("ULKE_KODU") 'F
ws.Cells(i + 7, 7).Value = JMainInfo.GetString("CARI_ISIM") 'G
ws.Cells(i + 7, 8).Value = JMainInfo.GetString("CARI_TIP") 'H
Set JSuppInfo = DataElem.GetJObject("CariEkBilgi")
ws.Cells(i + 7, 9).Value = JSuppInfo.GetString("KayitTarihi") 'I
ws.Cells(i + 7, 10).Value = JSuppInfo.GetString("KayitYapanKul") 'J
ws.Cells(i + 7, 11).Value = JSuppInfo.GetString("DuzeltmeTarihi") 'K
ws.Cells(i + 7, 12).Value = JSuppInfo.GetString("DuzeltmeYapanKul") 'L
ws.Cells(i + 7, 13).Value = JMainInfo.GetDouble("CM_BORCT") 'M
ws.Cells(i + 7, 14).Value = JMainInfo.GetDouble("CM_ALACT") 'N
Next i
End Sub
Sub Post_Click()
Set JMainInfo = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JMainInfo.PutString("CARI_KOD", ws.Cells(3, 1).Value)
a = JMainInfo.PutString("CARI_ISIM", ws.Cells(3, 2).Value)
a = JMainInfo.PutString("CARI_TIP", ws.Cells(3, 3).Value)
a = JMainInfo.PutInteger("Sube_Kodu", ws.Cells(3, 4).Value)
a = JMainInfo.PutString("ACIK1", ws.Cells(3, 5).Value)
a = JMainInfo.PutString("ACIK2", ws.Cells(3, 6).Value)
a = JMainInfo.PutString("ACIK3", ws.Cells(3, 7).Value)
a = JMainInfo.PutString("CARI_ADRES", ws.Cells(3, 8).Value)
a = JMainInfo.PutString("CARI_IL", ws.Cells(3, 9).Value)
a = JMainInfo.PutString("CARI_TEL", ws.Cells(3, 10).Value)
a = JMainInfo.PutString("CARI_ILCE", ws.Cells(3, 11).Value)
a = JMainInfo.PutString("EMAIL", ws.Cells(3, 12).Value)
a = JMainInfo.PutString("WEB", ws.Cells(3, 13).Value)
Set JSuppInfo = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
a = JSuppInfo.PutString("TcKimlikNo", ws.Cells(3, 14).Value)
a = JSuppInfo.PutDouble("Kull1N", ws.Cells(3, 15).Value)
a = JSuppInfo.PutString("Kull1S", ws.Cells(3, 16).Value)
a = JSuppInfo.PutString("S_Yedek1", ws.Cells(3, 17).Value)
Set JArps = CreateObject("NetOpenX.Rest.COMClient.BLL.ComJObject")
b = JArps.PutComJObject("CariEkBilgi", (JSuppInfo))
b = JArps.PutComJObject("CariTemelBilgi", (JMainInfo))
respond = ComManager.Request("api/v2/ARPs", JArps.ConvertToString, "POST", "")
MsgBox (respond)
End Sub