soap-php-web servisleri: nvi icin ornek uygulama
bir sure once calismasini yaptigim ornek bir uygulama. bu sefer ki ajax yerine soap, php ve pear ile web servisleri uygulamasi… nvi.gov.tr’den neredeyse hepimiz tc kimlik numaramizi sorgulamisizdir. iste bu adrese baglanmadan kendi sunucumuz uzerinden de bu sorgulamalari yapabilmemize imkan taniyan web teknolojileri: soap(Simple Object Access Protocol) ve wsdl(Web Services Description Language)
bunlarin aciklamalarina girmeden simdilik, nvi.gov.tr’den soap ve wsdl ile turkiye’nin guncel il listesini nasil cekebilecegimizi gosteren kucuk bir uygulama. malesef sunulan diger web servislerini kullanma imkanim olmadi. bazilarinda hata var bazilari ise dogru sonuc donmuyor. ornek olarak tckimlik numarasi sorguladigimizda surekli olarak hata aliyoruz veya gecersiz tckimlik numarasi diyor.. e-posta atarak durumu sordum ve bilgilendirme istedim ama henuz yanit gelmedi. bekliyorum simdilik.. iste php-soap-wsdl-pear ile hazirladigimiz kucuk ornek uygulama:
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
<title>
NÜFUS İDARESİ - WEB SERVİSLERİ İÇİN ÖRNEK SOAP-WSDL UYGULAMASI
</title>
</head>
<body>
<?php
/**
* eser sahillioglu - shl -at- sahillioglu - net
* sahillioglu.net - defter.sahillioglu.net
* bu kod php ile soap kullanimina ornek olmasi icin yazildi
* kod, tepe tepe kullanilabilir yayilabilir silinebilir kopyalanabilir
* siz de katkida bulunayi unutmayin lutfen
*/
/**
* bu uygulama nvi.gov.tr’de sunulan soap sunucusunda sorgulama yapmak uzere hazirlanmistir.
* url’nin sonuna ‘?wsdl’ eklenerek WSDL kullanmasini sagliyoruz..
*/
//pear.php.net adresinden indirdigimiz SOAP paketindeki
//client.php dosyasini include ediyoruz.
//bu dosya bizim bir SOAP server’ina baglanip verilen hizmetler
//cercevesinde cesitli sorgular yapabilmemizi sagliyor
//ve donen sonucu parse edip kullanimimiza sunuyor.
//soap paketindeki dosyalari kullanabilmek icin bunlarin php’nin
//include_path’ine verilmis dizin altinda olmasi gerekiyor.
include(“SOAP/Client.php”);
// burada baglanacagimiz ve sorgu yapacagimiz url’yi tanimliyoruz.
// wsdl sorgusu yapabilmek icin adresin sonunda ?wsdl ekinin olmasi gerekiyor
$wsdl_url = “http://tckimlik.nvi.gov.tr/kpspublic.asmx?wsdl”;
//soap_wsdl class’indan yukaridaki url’yi vererek yeni bir nesne uretiyoruz
$wsdl = new SOAP_WSDL($wsdl_url);
//WSDL class’inda getProxy methodunu cagiriyoruz.
//bu method bize soap sunucusundaki webservislerin fonksiyonlarini
//sanki local fonksiyon gibi cagirmamizi sagliyor.
$soapclient = $wsdl->getProxy();
//asagida cagirdigimiz IlListesiGetir fonksiyonu aslinda nvi’nin fonksiyonu.
//ama getProxy methodu bize bunu soapclient’in bir fonksiyonu
//gibi cagirmamizi sagliyor.
//asagidaki satirda IlListesiGetir fonksiyonunu sorgulayip donen
//sonucu resultdata degiskenine atiyoruz.
//nvi.gov.tr de sunulan diger web servisleri icin:
//http://tckimlik.nvi.gov.tr/Web/WebServices.aspx adresini gezebilirsiniz.
$resultdata = $soapclient->IlListesiGetir();
if (PEAR::isError($resultdata)) {//donen bir hata mesaji var mi kontrol ediyoruz
print(“hata: ” . $resultdata->getMessage() . “<br>\n”); //donen hata varsa bunu ekrana bastiriyoruz
} else {//degilse
//il listesini ekrana ne sekilde bastiracaginiz size kalmis artik
//asagidaki satir ile donen verinin seklini semalini gorebilirsiniz.
//print_r($resultdata);
echo ‘<ul>’;
foreach ($resultdata as $key => $value) {
//donen verinin obje oldugunu unutmuyoruz. bu nedenle -> ile bastiriyoruz
echo ‘<li>’.$value->Kod.‘ - ‘.$value->Ad.‘</li>’;
}
echo ‘</ul>’;
}
//ve bitirdik..
?>
</body>
</html>