Visual Studio’da basitçe yaptığımız web servisi php’de c#’a göre biraz karmaşık kalabiliyor. Bu yazımda size açıklamaya çalışıp bir örnek yapacağım.

1-Web Servisi Nedir?

Yıl ne kadar ilerlese de bazı durumlar vardır ki eskiye dönmeyi gerektirir.Web servis xml tabanlı mesajlaşma altyapısıdır.Mantık olarak apilere benzer. Bir istek ile xml cıktılar oluşturup bunları dışarıya sunarız.Bu çıktılar xml olduğu için farklı platformlardan erişilebilir ve kullanılabilir.İki platform arasında köprü görevi görür.Bu yüzden kullanışlıdır.

2-SOAP ve Rest Mimarileri(Basit Nesne Erişim Protokolu) Nedir?

Adında da yazdığı gibi SOAP bir mesaj aktarma protokolüdür.Mesajlar xml formatındadır.
Rest de aynı işi görmektedir.Arasında ki farklar Soap sadece xml formatında çalışır, güvenliği daha kolay sağlanır ve reste gore daha yavaştır.Rest mimarisinde JSON ve XML formatında çıktılar üretebiliriz.Hızlıdır.Fakat Soapa göre takıldığımızda bakabileceğimiz fazla kaynağı yoktur.

3.WSDL Nedir?

Hem client hemde server için ortak bir alan oluşturur.Çıktının alınabilmesi için gerekli olan metodları ve adresleri belirtir.Kullanıcı WSDL’ye bakarak hangi metodları,hangi parametreleri kullanarak çekebileceğini görür.Temel mantığı budur.

4.Nusoap Ne İşe yarar?

Php ile web servisi yapmaya kalkıştığımızda bir Soap kütüphanesine ihtiyaç duyarız. hazır olarak bu linkten NuSoap kütüphanesini indirip projenizde ki lib klasörünüze atmanız gerekir.Bundan sonra tek yapmamız gereken php dosyamıza nusoap kütüphanesini import etmektir.
require_once(‘lib/nusoap.php’);

Şimdi bir örnek yapalım.Yapacağımız şey bir web servisi kuracağız,bir veritabanı oluşturup kullanıcıların oluşturduğumuz webservis üzerinden o veritabanında belirlediğimiz tablolara ulaşıp bilgileri almasını sağlayacağız.Yani hem web servisi oluşturacağız hemde client oluşturup bilgileri çekeceğiz.

ws diye bir klasör oluşturup içine yukarda verdiğim linkten indirdiğim nusoap kütüphanesini atıyorum ve birde index.php diye bir php dosyası oluşturuyorum. index dosyasının içine aşağıdaki kodları yazıyoruz kod satırlarının ne işe yaradığını yanlarına yazacağım.

<?php 

require_once "lib/nusoap.php";//oluşturduğumuz ws/lib klasörünün içindeki nusoap.php kütüphanesini çağırır.

$server = new soap_server();//soap server oluşturup server değişkenine atıyoruz
$server->configureWSDL("açıklama","urn:webservisimiz");//WSDL'nin adını ve acıklamasını veriyoruz.rastgele verebilirsiniz

if(!isset($HTTP_RAW_POST_DATA)){
	$HTTP_RAW_POST_DATA = file_get_contents("php://input");
}

//webservisimize register yapacağımız fonksiyonun içeriğini burada belirliyoruz.Kullanıcı veritabanımızda neleri görebilsin?
function getir(){
	$cn = mysqli_connect("localhost","kullaniciadiniz(root)","sifre","veritabaniadiniz");
	$metodlar = $cn->query("SELECT sutunadi1,sutunadi2,sutunadi3 FROM tabloadiniz");
	$Arrmetodlar = [];
	while ($metod = mysqli_fetch_array($metodlar,MYSQLI_ASSOC)) {
		$Arrmetodlar[] = $metod ;
	}
	return json_encode($Arrmetodlar);
}
//nusoap kütüphanesinin nimetlerinden register fonksiyonu.Burada yukarıda ayarladığımız fonksiyonu alarak web servisimizi oluşturuyoruz.
$server->register("getir",array(),
				 				    array("return"=>"xsd:string"),
				 				    "urn:webservisimiz",
				 				    "urn:webservisimiz#getir",
				 				    "rpc",
				 				    "encoded",
				 				    "bilgileri getir"
				  );

$server->service($HTTP_RAW_POST_DATA);

Bir sorunla karşılaşmadıysanız web servisiniz oluşmuş ve resimde ki gibi gözükmesi gerekiyor.Bir sorunla karşılaştıysanız yorum olarak yazarsanız.Yardımcı olurum.

webservisi

Şimdi geldi bu oluşturduğumuz web servisten databasede ki bilgileri nasıl çekebiliriz.

proje dosyanızın içine ws diye bir klasör oluşturmuştuk.Onunla işimiz bitti.Şimdi bir de client diye bir klasör oluşturalım ve içine yine nusoap kütüphanesiyle bir index.php atalım. Ardından index.php dosyamıza aşağıdaki kodları yapıştıralım.

<?php 

require_once "lib/nusoap.php";//nusoap kütüphanesini çağırma


$client = new nusoap_client("http://localhost/webservice/ws/index.php?wsdl");//bir client oluşturup wsdl adresimizi yazıyoruz.(oluşturduğumuz webservisine giderek wsdl  linkine tıklayıp alın)
$metodlar = $client->call("getir");//web servisimizde oluşturduğumuz fonksiyonu clientimize çağırıyoruz.
$metodlar = json_decode($metodlar);

echo "<ul>";
foreach ($metodlar as $metod) {
	echo "<li>".$metod->sutunadi1." ".$metod->sutunadi2." ".$metod->sutunadi3." "."</li>";//databaseden ne çekmek istiyorsak sutun isimlerini buraya yazıyoruz.
}
echo "</ul>";
?>

About the author

Benan DİNDAR

Leave a Comment

Powered by themekiller.com anime4online.com animextoon.com