TC kimlik no sayfasının Web Servis'lerini kullanmaya başlaması ve bize bu şekilde sorgu yapabilme imkanı vermesi çok hoş. Bizi HTML veya XML parse işleminden kurtarıyor.
Sayfanın HTML kodunun değişmesi ve bizim parse algoritmamızın kırılması ihtimalini de ortadan kaldırıyor.
Bu makale Delphi 7 için yazılmıştır. Bende Enterprise sürümü mevcut. Diğer sürümlerde Web Servisleri için gerekli SOAP bileşenleri olmayabilir!
Öncelikle Delphi'yi açıyoruz (tabii ki ) Menuden File->New->Other'ı seçiyoruz. Çıkan dialog'da "Web Services" sekmesini buluyoruz (sizinkinde yoksa çok üzgünüm, Delphi 7 Enterprise sürümü edinmeye çalışın). Burada "WSDL Importer"ı seçin ve "OK"'e basın.
Delphi bize farklı bir Dialog kutusu açacak. Bu bölüm, Web Servisleri için gerekli olan interface tanımlamalarını otomatik olarak yapmak için konulmuş (harika bir özellik, yoksa manuel kod yazarak yapacaktınız ). Dialog, WSDL tanımlamalarının bulunduğu sayfayı internet'ten alıyor (tabii ki internet bağlantısı açık olmalı) veya isterseniz
bu XML dosyasını internet'ten çekip biryere kaydedebilirsiniz. Böylece bu dosyayı seçerek, offline olarak da interface tanımlamaları yapılabilir.
İlk bölümde WSDL tanımlamalarının bulunduğu sayfanın URL'sini girmeniz veya bu dosyayı zaten indirdiyseniz dosyayı göstermeniz gerekli.
Eğer URL ile çalışacaksanız buraya:
http://tckimlik.nvi.gov.tr/kpsPublic.asmx?WSDL yazın ve "Next"'e basın. Eğer bir proxy arkasındaysanız "Options" düğmesine basarak açılan dialog'da gerekli proxy tanımlamalarını yapabilirsiniz.
Bundan sonra Delphi size oluşturulan kodun bir öngörünümünü sunar. Burayı inceleyin! Çünkü kodlamada bu interface ve property'lerden faydalanacağız.
"Finish"'e basarak bitirin. Delphi, interface ve object tanımlamalarından oluşan bir dosya yaratacak. Bu unit'i programımızda kullanacağız.
Burada önemli olan function "GetKPSPublicWebServiceSoap". Bu function, interface'i create edip gerekli ayarlamaları yapar. Hiç parametre vermeden de kullanabilirsiniz ki ben öyle yaptım.
Programınızda "KPS: KPSPublicWebServiceSoap" ile bir değişken tanımlayın. Sonra "KPS:= GetKPSPublicWebServiceSoap;" ile interface'in oluşturulmasını ve Web Servisinin ayarlanmasını sağlayın. Bunu yapmazsanız programınız çalışmaz. Yani:
Kod: Tümünü seç
var
KPS: KPSPublicWebServiceSoap;
begin
KPS:= GetKPSPublicWebServiceSoap;
end;
Kod: Tümünü seç
KPS:= nil;
Delphi'nin oluşturduğu dosyayı iyi inceleyin. Kullanacağınız object ve property'ler hep burada tanımlı. Mesela interface içinde:
Kod: Tümünü seç
function TCKimlikNoDogrula(const tcKimlikNo: Int64): TCKimlikNoDogrulamaSonucu; stdcall;
Kod: Tümünü seç
var
Kimlik: TCKimlikNoDogrulamaSonucu;
begin
Kimlik:= KPS.TCKimlikNoDogrula(12345678912);
end;
Numara sistemde kayıtlı ve geçerliyse dönen "Kimlik" objesinden TCKimlikNo, Ad, Soyad, DogumYil property'lerini okuyabiliriz.
Bu işlemleri yapmak için internet bağlantısının açık olması gerektiğini söylemeye gerek yok herhalde. Çünkü sorgulamalar internet aracılığıyla yapılıyor.
Örnek programın kaynak kodlarını siteye eklemesi için adminimize göndereceğim. Dilerim ki siteye ekleyecektir. Geri kalan sorgulama türlerinin nasıl yapılacağı bu kodlarda gösterilmiştir. Programın kusuruna bakmayın ve estetik aramayın. Ayrıca hata kontrolü içermiyor. "Item index out of bounds" hatası alırsanız İl-İlçe seçmemişsiniz demektir.
İyi eğlenceler.