16 Aug

Var Olan Bir Web Servisi Kullanmak

Daha önceki konularda , genel olarak WSDL yapısını anlatmaya çalıştım. WSDL’i nasıl kullanacağımıza dair bir örnek de verdim. Gene WSDL kullanımına dair bir örnek vereceğim, yalnız bu sefer biz sadece istemci tarafı olacağız.

Mevcut bir web servis ile iletişim kurmamız gerekiyor, bize WSDL adresi verildi, gerekli dökümanın da verildiğini varsayarak örneğimize geçelim.

Örneğimizdeki WSDL , kendisine verilen alan adının kime ait olduğunu söylemekte. Yani basit bir WHOIS sorgusu yapan bir web servis. Bu web servis, WebserviceX.Net adlı bir site tarafından Asp.Net kullanılarak hazırlanmış ( http://www.webservicex.net/whois.asmx?wsdl ). Biz de WSDL aracılığı ile Asp.Net de yazılmış bu servisi kullanacağız.

Tabi öncelikle WSDL i eclipse aracılığı ile açıyoruz, böylece hangi metodların olduğunu ve ne gibi parametreler aldığını, ne sonuç döndüreceğiniz görebileceğiz.

wsdl örnek

Yukarıdaki kalabalık kafanızı karıştırmasın. Bize gerekli olan alan, renkli olarak işaretlenmiş alan. Burada GetWhoIs adında bir metodun olduğunu ve cevap olarak GetWhoIsResponse tipinde bir veri dönderdiğini görüyoruz.

GetWhoIs metodu parametre olarak GetWhoIs tipinde bir veri almakta. Aşağıda, WSDL için gerekli sınınıfı oluşturdum :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class GetWhoIS {
   public $HostName;
   public function __construct($host){
      $this->HostName=$host;
   }
}

$parametre = new GetWhoIS('ersindogan.com');
$istemci=new SoapClient('http://www.webservicex.net/whois.asmx?wsdl',array('trace'=>1));
try {    
$sonuc = $istemci->GetWhoIS($parametre);
echo '<xmp><pre>',print_r($sonuc,true),'</pre></xmp>';
}catch(Exception $e){
echo $e->getMessage();
}

Görüldüğü gibi, öyle karmaşık işlemler yapmadan, birkaç adımda, kolayca, web servisimizi kullanabilir biçimde kodumuzu oluşturabiliyoruz. Uğraşmamız greken herhangi bir XML kodu yok,web servisin hangi dil ile oluşturulmuş olduğunun önemi yok, sanki kendi oluşturduğumuz bir classmış gibi kolaylıkla kullanabiliyoruz.

Bu örnekte metod adı (GetWhoIs) ile aldığı parametrenin adı aynı, bu kafanızı karıştırmasın. Yukarıdaki oluşturduğum class , web servisde bulunan metodun aldığı parametredir.

Güzel günler dileği ile.