24 Apr

WSDL’i nasıl okuyabiliriz

Bir WSDL dosyasının nasıl oluşturulabileceğine dair bir örnek vermek istiyordum, ama önce bir WSDL dosyasını okumayı göstermek daha iyi olur diye düşündüm.
Kendi oluşturduğum, oldukça basit bir WSDL dosyasını sizinle paylaşacağım ve bu WSDL yardımı ile konu üzerinde fikir edindirmeye çalışacağım. Ayrıca önceki yazıyı okuyarak bir fikir sahibi olabilirsiniz.

WSDL dosyamızı oluşturabilmek için Eclipse kullandım. Eclipse gerçekten çok başarılı bir geliştirme ortamı sunuyor. Hangi aracı kullanır iseniz kullanın, bilgisayarınızda mutlaka Eclipse bulundurun.

Şimdi geçelim WSDL dosyamıza. Aşağıdaki resimde görülebileceği gibi çok basit bir WSDL oluşturduk ( WSDL oluşturmaya daha sonra değineceğim )

Buradaki web servis çok basit . EchoTest adında bir metodu mevcut. Bu metod string tipinde ad,soyad ve mesaj diye parametreler almakta ve birde string tipinde sonuç döndürmekte. Bütün bunları Eclipse yardımı ile görebiliyoruz.

Adım adım gidersek :

İlk önce WSDL dosyamızı Eclipse ile açtık (Eclipse’in WSDL editor desteği olmalı veya sonradan aktif edilmelidir). Dosyayı açtığımızda yukarıdaki gibi bir yapı ile karşılaşırız.

Burada birçok alan mevcut, eğer başka bir WSDL açarsanız muhtemelen çok daha fazla alan ile karşılaşacaksınızdır.

NewPort yazan alanın altındaki değer, servis çağrılarının yapılacağı adrestir (EndpointURI) . Yani yaptığınız her SOAP çağrısı bu adrese yapılır.

TestServisi yazan alan servisimizin kendisidir.

EchoTest servisimize ait bir metoddur. Burada input ve output alanları görmekteyiz.

İnput alanı metodun aldığı parametreleri ve parametre tiplerini tutar.
Output ise metodun döndüreceği sonucu ve tipini tutar.

Bu servisin çağrımı aşağıdaki gibi olur

1
2
$istemci=new SoapClient('test.wsdl'); // böyle bir wsdlimiz olduğunu varsayıyorum
echo $istemci->EchoTest('Ersin','DOGAN','Merhaba Dunya');

Servisin çalışan şeklini burada göstermek istiyordum, ama hosting firmamın anlamadığım bir stratejisinden dolayı SOAP devredışı bırakılmış. Bu yüzden örneğin çalışabilir halini burada veremiyorum.

Son olarak bu servisin sunucu tarafını vererek noktalayalım :

1
2
3
4
5
6
7
8
class TestServisi {
   public function EchoTest($ad,$soyad,$mesaj){
      return 'Merhaba '.$ad.' '.$soyad.' Mesajınız: '.$mesaj.' alındı';
   }
}
$server=new SoapServer('test.wsdl');
$server->setClass('TestServisi');
$server->handle();

Sunucu tarafında da istemci tarafında da aynı wsdl kullanılır. Çünkü wsdl’in temel amacı budur. Yani ortak bir yapı kurarak servisler arası iletişimi sağlamak.

İstemci wsdl dosyasına bakarak hangi metodu nasıl , ne parametreler ile çağıracağını ne sonuç döneceğini bilir.
Sunucu ise hangi servisi çalıştıracağını ve ne sonuç döndüreceğini wsdl yardımı ile bilir.

Bu konuda yazacağım şimdilik bu kadar. Anlaşılmaz , eksik veya hatalı yer var ise yorum düşebilirseniz ilgilenirim.

Güzel günler dileği ile.

Not : WSDL dosyasına buradan ulaşabilirsiniz.

2 thoughts on “WSDL’i nasıl okuyabiliriz

  1. Halen kafamda eksik noktalar olsada, sabahtan beri anlayabildiğim en iyi örnek buydu. Paylaşımınız için teşekkür ederim.

  2. WSDL konusu kolay olmak ile birlikte çok fazla ayrıntı içermekte.Elimden geldiğince sade değinmeye çalıştım.
    Aklınıza takılan şeyleri buraya not düşerseniz, elimden geldiğince cevaplarım. Böylece başka insanlar da faydalanmış olur.

Comments are closed.