NuSOAP ile SOAP servisimizi oluşturalım, WSDL ile bağlantı kuralım

Standard

Selam herkese,

SOAP servis yapmanız gerekirse bir gün veya wsdl ile soap servise bağlanmanız gerekirse NuSOAP isimli kütüphane işinizi fazlaca çözecektir.

Öncelikli olarak aşağıdaki linkten indiriniz:

http://sourceforge.net/projects/nusoap/

SOAP Servis Oluşturmak

Ben şimdi size elbise için bir servis yazacağım. Burada servisi kullananlara zamana göre ürün sunabilirsiniz. Yani Örnek için düşündüğüm konsept budur 🙂

elbise.php dosyasını oluşturup içine şu kodları ekleyiniz

<?php
require_once "lib/nusoap.php";
 
class elbise {
 
    public function getElbise($type) {
        switch ($type) {
            case 'gunluk':
                return 'Kot gömlek..';
                break;
            case 'yilbasi':
                return 'Kırmızı Konsepti';
                break;
            case 'ozelgece':
                return 'Abiye';
                break;
            default:
                break;
        }
    }
}
 
$server = new soap_server();
$server->configureWSDL("elbiseservice", "http://www.onurcanalp.com/elbiseservice");
 
$server->register("elbise.getElbise",
    array("type" => "xsd:string"),
    array("return" => "xsd:string"),
    "http://www.onurcanalp.com/elbiseservice",
    "http://www.onurcanalp.com/elbiseservice#getElbise",
    "rpc",
    "encoded",
    "Get elbise by type");
 
@$server->service($HTTP_RAW_POST_DATA);

Yukarıda ki kodu genel hatları ile ele almak gerekirse başta kütüphanemizi dahil ettik..
ikindi adım da  basitçe getElbise metodu oluşturduk..
Daha sonra soap_server sınıfını oluşturup WSDL servisimiz için gerekli ayarları yaptık..

Şimdi servisimizi oluştururken kullandığımız parametrelere kısaca değinelim istereniz.

  • elbise.getElbise zaten gördüğünüz üzere className.methodName
  • array(“type” => “xsd:string”) getElbise metodumuza girilmesi gereken değişkeni ifade eder. Yanındaki data tipi bildiğimiz string, number, boolean vs. olabilir.
  • array(“return” => “xsd:string”) metodun döneceği data tipini belirler ve yine aynı şekilde string, number, boolean olabilir.

http://www.onurcanalp.com/elbiseservice bizim için namespace. Namespace kullanmak duplicete işleminin önüne geçer yanı elbise:elbiseservice başka namespace altında kullanmak gibi..
http://www.onurcanalp.com/elbiseservice#getElbise bizim SOAP aksiyonumuzu ifade eder..
rpc işlem tipini temsil eder (rpc veya document olabilir)
encoded da attribute değerimizi tanımlar. (encoded veya literal olabilir)
Son parametremiz de getElbise metodumuzun dökümantasyon metni gibi düşünebiliriz..

Direk elbise.php açarsanız karşınıza gelecek görüntü

Screen Shot 2015-01-29 at 09.25.27

Tabi kodunuzu yazdıktan sonra sonunda http://onurcanalp.com/elbise.php?wsdl ile çağırmayı unutmayın. İşlem sonucunda wsdl dosyanızı göreceksiniz.
NOT: Adreste kodlar yok boşa denemeyin, ben local de çalıştım ama kolay anlayın diye web sitem ile güncelledim.

Screen Shot 2015-01-29 at 09.26.00

SOAP client oluşturup servisimize bağlanalım

Şimdi elbiseclient.php dosyasını oluşturup içine aşağıdaki kodları yazın

<?php
require_once "lib/nusoap.php";
 
$client = new nusoap_client("http://www.onurcanalp.com/elbise.php?wsdl", true);
$error  = $client->getError();
 
if ($error) {
    echo "<h2>Constructor error</h2><pre>" . $error . "</pre>";
}
 
$result = $client->call("elbise.getElbise", array("type" => "gunluk"));
 
if ($client->fault) {
    echo "<h2>Fault</h2><pre>";
    print_r($result);
    echo "</pre>";
} else {
    $error = $client->getError();
    if ($error) {
        echo "<h2>Error</h2><pre>" . $error . "</pre>";
    } else {
        echo "<h2>Main</h2>";
        echo $result;
    }
}
 
// show soap request and response
echo "<h2>Request</h2>";
echo "<pre>" . htmlspecialchars($client->request, ENT_QUOTES) . "</pre>";
echo "<h2>Response</h2>";
echo "<pre>" . htmlspecialchars($client->response, ENT_QUOTES) . "</pre>";

Yine kütüphanemizi çağırdık, bağlantımızı sağladık ve call ile elbise.getElbise servisimizi type ‘ı gunluk olacak şekilde çağırdık.. Sonucu da aşağıda görebilirsiniz.

WSDL SOAP result

Görüldüğü üzere gayet basit şekilde işlemi çözdük, yeterli olmuştur diye düşünüyorum.

Herkese kolay gelsin..

4 thoughts on “NuSOAP ile SOAP servisimizi oluşturalım, WSDL ile bağlantı kuralım

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir