Bu yazımızda, C# ile XML Web Servislerini kullanarak http://tckimlik.nvi.gov.tr adresinde hizmete sunulan vatandaşlık numarası doğrulama hizmetini ele alan bir örnek proje geliştireceğiz.
“TCKimlikDogrulama” adında bir Windows Forms projesi oluşturarak başlayalım.
Proje açıldıktan sonra, doğrulama için web servisine gönderilecek olan bilgileri kullanıcıdan almak üzere aşağıdaki gibi bir form tasarımı yapalım.
Şimdi sıra geldi servis referansını projemize eklemeye…
T.C. İçişleri Bakanlığı Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü tarafından kullanıma sunulan web servisinin adresini aşağıda bulabilirsiniz.
https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx
DİKKAT: KPS Servisi yalnızca SSL (https adresi) üzerinden hizmet veriyor.
Bu servisi proje içerisinde kullanabilmek için öncelikle Solution Explorer içerisinde yer alan References alanına sağ tıklayalım ve Add Service Reference… seçeneğini seçelim.
Açılan ekranda Address bölümüne servisin WSDL dosyasının adresini(https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL) verelim, Namespace bilgisi olarak “Kimlik” kullanalım ve GO butonuna tıklayıp, servisin Services bölümünde listelenmesini sağlayalım.
Bu işlemlerin ardından OK butonuna tıklayarak servis referansının projeye eklenme sürecini tamamlayalım. Şimdi de, servise çağrı yapıp sonucu alacak olan kodları projeye ekleyelim. Bunun için btnDogrula isimli buton kontrolünün Click olayına aşağıdaki metodu bağlayalım.
Bu son işlemin ardından artık projeyi derleyip kullanmaya başlayabiliriz.
ÖNEMLİ NOT: Servise doğrulama için gönderilecek ad ve soyad bilgileri tamamen büyük harflerle yazılmış olarak gönderilmelidir.
T.C. Kimlik No doğrulama algoritması için buradan bilgi alabilirsiniz.
11 yorum:
çok teşekkürler hocam..
keşke web servisleri win formlardan kullanmak ile ilgili bir yazı dizisi hazırlasanız özellikle kamu sektöründe sağlık bakanlığı vb. yerlerde hep servisler var..
Eğer bahsettiğiniz servisler halka açık servisler ise hazırlayabilirim birşeyler.
Blogunuzdaki paylaşımlar çok önemli ve ilginç grand ofis mobilyaları olarak uzun süredir,sitenizin takipçisiyiz.
merhaba Ercan Hocam,
bir projemde, web sitemde tc kimlik sorgulaması yapıp,dogrulama sağlandıktan sonra isim,soyadı,d.tarihi v.b gibi bilgileri veritabanıma nasıl ekleyebilirim.nereden destek alırım
Merhaba, teknoloji halen kullanıldığı için konu güncelliğini yitirmiyor.
Yukarıdaki yorumlarda da belirtildiği gibi Sağlık Bakanlığı ve diğer bakanlıklarda ilgili web servislerinin kullanımı gittikçe artmaya başladı. Eğer çeşitli web servislerine ara ara değinirseniz memnun oluruz.
Örnek: http://mhrsws.sagliknet.saglik.gov.tr/PRSC_MHRS_WS?wsdl
bu adresteki web servis üzerinden bir class oluşturup listeleme ve sorgu gönderme tekniklerini anlatırsanız seviniriz.
Selamlar.
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tckimlik.nvi.gov.tr/WS/TCKimlikNoDogrula", RequestNamespace="http://tckimlik.nvi.gov.tr/WS", ResponseNamespace="http://tckimlik.nvi.gov.tr/WS", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public bool TCKimlikNoDogrula(long TCKimlikNo, string Ad, string Soyad, int DogumYili) {
object[] results = this.Invoke("TCKimlikNoDogrula", new object[] {
TCKimlikNo,
Ad,
Soyad,
DogumYili});
return ((bool)(results[0]));
}
///
public System.IAsyncResult BeginTCKimlikNoDogrula(long TCKimlikNo, string Ad, string Soyad, int DogumYili, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("TCKimlikNoDogrula", new object[] {
TCKimlikNo,
Ad,
Soyad,
DogumYili}, callback, asyncState);
}
///
public bool EndTCKimlikNoDogrula(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
bu kodlara göre düzenleme yapamadım yardımcı olursadnız..
'tckimlik.nvi.gov.tr' yetkisiyle SSL/TLS için güvenli kanal kurulamadı. hatası alıyoruz bunu nasıl çözebiliriz. ?
Recep Bey bu sorun bende de mevcut. Nasıl düzeltileceği ile ilgili bir bilgiye ulaşabildiniz mi acaba??
Yılmaz Bey maalesef çözüm sağlayamadım. Tahminimce sertifika hatası olduğundan bilgisayara muhtemelen NVİ.GOV.TR sertifikasını gömmek gerekiyor.
Merhaba
aynı sorunu bende yaşadım. Framework eski olduğu için,
doğrulama yapmadan önce Tls12 aktif etmek için aşağıdaki kodu eklemeniz gerekli
///////////////////////////
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls12;
///////////////////////////
There was an error downloading 'https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL/_vti_bin/ListData.svc/$metadata'.
The request was aborted: Could not create SSL/TLS secure channel.
Metadata contains a reference that cannot be resolved: 'https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx?WSDL'.
Could not establish secure channel for SSL/TLS with authority 'tckimlik.nvi.gov.tr'.
The request was aborted: Could not create SSL/TLS secure channel.
If the service is defined in the current solution, try building the solution and adding the service reference again.
hatası alıyorum
Yorum Gönder