ana sayfa > PHP > PHP Webservice (SOAP)

PHP Webservice (SOAP)

Pazartesi, 01 Haz 2009

Bu yazımda PHP ile oldukça basit olarak webservice yi anlatmaya çalışıcam.

Niçin webservice ye ihtiyaç duyulduğunu kısaca anlatalım.

Örneğin bir database niz var ve başka bir uygulama buraya erişmek istiyor. Böyle bir durumda karşı tarafa database inize erişim izni vermeniz gerekir ki bunu hem güvenlik hemde erişilebilirlik açısından kimse istemez. Böyle bir durumda tercih edilecek yöntem webservice dir.  Neyin istendiği webservice ye sorulur , webservice de buna cevap verir.

Webservice için en bilinen örnek, tc kimlik numarası sorgulama sistemidir. Siz tc kimlik numaralarının kayıtlı olduğu sisteme erişmenize gerek kalmadan (buna izin verilmeyeceği bellidir  :) ) webservice ye sorarsınız. Ayrıca webservice farklı platformların konuşturulması açısından da önemlidir.

Php de webservice hazırlamak için XML-RPC veya SOAP kullanabilirsiniz.  SOAP içinde NuSoap kütüphanesini veya  SOAP extension unu(php5 ve sonrası için) tercih edebilirsiniz. Ben burada SOAP extension unun kullanımına örnek vericem.

NOT : php.ini içindeki “;extension=php_soap.dll” satırındaki “;” kaldırmanız gerektiğini hatırlatayım.

Ders notlarını yayınlayan bir webservice miz olsun. Biz de buna bağlanıp fen dersinin notunu soralım.

Ana dizinimizde (www veya htdocs olabilir) Webservice adında bir klasör açıp, bu klasörde aşağıda içerikleri verilen 2 dosyayı oluşturduktan sonra webserviceClient.php yi çalıştırıp sonucu görebiliriz.

Server (webserviceServer.php)

<?php

// dersler adında bir dizi tanımlayalım
$dersler    = array(”matematik” => 55, “fen” =>60, “tarih” => 70);

function getNotlar($symbol)  {

global $dersler;
return $dersler[$symbol];

}

$server = new SoapServer(null,array(’uri’ => “http://127.0.0.1/”));

// getNotlar fonksiyonunu daha önce tanımladığımıza dikkat edin.
$server->addFunction(”getNotlar”);
$server->handle();

?>

————————————————————————————————————————

Client (webserviceClient.php)

<?php

// Test yaparken cache özelliğinin kapatılması önerilir. Bizde cache lemeyi kapatılım.
ini_set(”soap.wsdl_cache_enabled”, “0″);

// location parametresiyle webservice server in yolunu belirtiyoruz.
$client = new SoapClient(null, array(’location’ => “http://127.0.0.1/Webservice/webserviceServer.php”,’uri’ => “http://127.0.0.1/”));

// burada da getNotlar fonksiyonuna “fen” parametresini yolluyoruz.
echo $client->__soapCall(”getNotlar”,array(”fen”));

?>

Örnek kodları buradan indirebilirsiniz.

Evren PHP , , , , , ,

  1. Osman
    Çarşamba, 17 Şub 2010 zamanında 23:19 | #1

    Teşekkürler güzel bir yazı olmuş

  1. Çarşamba, 10 Haz 2009 zamanında 17:15 | #1
  2. Perşembe, 18 Mar 2010 zamanında 19:22 | #2