CRUD Web Service SOAP WSDL Menggunakan Nusoap

Sebelumnya sebagai catatan, aplikasi ini dibuat dan dijalankan dalam operating system linux (UBUNTU, Linuxmint, dan Elementary OS). Bagi teman-teman mungkin akan mendapati error untuk function readall (Return Array). Bagi temen2 yang bisa ngasih solusi, bisa ditulis di kolom komen, nanti akan saya update secepatnya. 😀

Berikut contoh web service menggunakan nusoap library. Dalam contoh ini kita menggunakan satu table bernama tbl_kategori, ceritanya kita mau bikin web service untuk aplikasi perpus. Sebelumnya kita download dulu nusoap library di nusoap.

web service

Setelah kita download library nusoapnya,kita buat dulu database dengan nama “perpus” dan table dengan nama “tbl_kategori” dengan struktur seperti ini :

CREATE TABLE IF NOT EXISTS `tbl_kategori` (
`id_kategori_buku` int(11) auto_increment primary key NOT NULL,
  `kategori_buku` varchar(256) DEFAULT NULL
)

Setalah kita buat buat database dan tablenya, kita buat folder di /var/www/ dengan nama “wsperpus”, setelah itu kita buat dua folder di dalam wsperpus yaitu “classDb” dan “lib”.  Kalo udah, kita exstract file nusoap yang udah didownload trus kita copy file nusoap.php ke dalam folder /wsperpus/lib. Setelah kita copy librarynya, kita buat file dengan nama Classkategori.php di dalam folder wsperpus/classDb.

<?php
    class Classkategori{

        public function create($kategori_buku){
            include 'Koneksi.php';
            $sql = "INSERT INTO tbl_kategori (kategori_buku) VALUES (?)";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param('s',$kategori_buku);
            $query = $stmt->execute();
            $stmt->close();
            $conn->close();
            return $query;
        }
        public function readbyid($id_kategori_buku){
            include 'Koneksi.php';
            $sql = "SELECT * FROM tbl_kategori WHERE id_kategori_buku = '".$id_kategori_buku."'";
            $query = $conn->query($sql);
            $conn->close();
            return $query;
        }
        public function readAll(){
            include 'Koneksi.php';
            $sql = "SELECT * FROM tbl_kategori";
            $query = $conn->query($sql);
            $conn->close();
            return $query;
        }
        public function updatebyid($id_kategori_buku,$kategori_buku){
            include 'Koneksi.php';
            $sql = "UPDATE tbl_kategori SET kategori_buku = ? WHERE id_kategori_buku = ?";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param('si',$kategori_buku,$id_kategori_buku);
            $query = $stmt->execute();
            $stmt->close();
            $conn->close();
            return $query;
        }
        public function deletebyid($id_kategori_buku){
            include 'Koneksi.php';
            $sql = "DELETE FROM tbl_kategori WHERE id_kategori_buku = ?";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param('i',$id_kategori_buku);
            $query = $stmt->execute();
            $stmt->close();
            $conn->close();
            return $query;
        }
    }
 ?>

Setelah kita buat file Classkategori.php kita buat juga file dengan nama Koneksi.php.

<?php
    $host = "localhost";
    $user = "usernamenya";
    $pass = "passwordnya";
    $db = "databasenya";

    $conn = new mysqli($host,$user,$pass,$db);
    if ($conn->connect_error) {
        die("Koneksi gagal : ". $conn->connect_error);
    }
 ?>

Setelah dua file di dalam folder classDb beres, sekarang kita tinggal bikin file di dalam folder wsperpus dengan nama wskategori.php.

<?php
    $ns = "http://".$_SERVER['HTTP_HOST']."/wsperpus/wskategori.php";//setting namespace
    require_once 'lib/nusoap.php'; // load nusoap toolkit library in controller
    $server = new soap_server; // create soap server object
    $server->configureWSDL("WEB SERVICE PERPUS MENGGUNAKAN SOAP WSDL", $ns); // wsdl configuration
    $server->wsdl->schemaTargetNamespace = $ns; // server namespace

    ########################Kategori BUKU##############################################################
    // Complex Array Keys and Types kategori Buku++++++++++++++++++++++++++++++++++++++++++
    $server->wsdl->addComplexType("kategoriData","complexType","struct","all","",
        array(
        "id_kategori_buku"=>array("name"=>"id_kategori_buku","type"=>"xsd:int"),
        "kategori_buku"=>array("name"=>"kategori_buku","type"=>"xsd:string")
        )
    );
    // Complex Array kategori Buku++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    $server->wsdl->addComplexType("kategoriArray","complexType","array","","SOAP-ENC:Array",
        array(),
        array(
            array(
                "ref"=>"SOAP-ENC:arrayType",
                "wsdl:arrayType"=>"tns:kategoriData[]"
            )
        ),
        "kategoriData"
    );
    // End Complex Type kategori++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //create kategori buku
    $input_create = array('kategori_buku' => "xsd:string"); // parameter create kategori
    $return_create = array("return" => "xsd:string");
    $server->register('create',
        $input_create,
        $return_create,
        $ns,
        "urn:".$ns."/create",
        "rpc",
        "encoded",
        "Menyimpan kategori Buku Baru");
    //end create kategori buku
    //readbyid kategori buku
    $input_readbyid = array('id_kategori_buku' => "xsd:int"); // parameter readbyid kategori
    $return_readbyid = array("return" => "tns:kategoriArray");
    $server->register('readbyid',
        $input_readbyid,
        $return_readbyid,
        $ns,
        "urn:".$ns."/readbyid",
        "rpc",
        "encoded",
        "Mengambil kategori Buku by id_kategori_buku");
    //end readbyid kategori buku
    //update kategori buku
    $input_update = array('id_kategori_buku' => "xsd:int","kategori_buku"=>"xsd:string"); // parameter update kategori
    $return_update = array("return" => "xsd:string");
    $server->register('updatebyid',
        $input_update,
        $return_update,
        $ns,
        "urn:".$ns."/updatebyid",
        "rpc",
        "encoded",
        "Mengupdate kategori by id_kategori_buku");
    //end update kategori buku
    //delete kategori buku
    $input_delete = array('id_kategori_buku' => "xsd:string"); // parameter hapus kategori
    $return_delete = array("return" => "xsd:string");
    $server->register('deletebyid',
        $input_delete,
        $return_delete,
        $ns,
        "urn:".$ns."/deletebyid",
        "rpc",
        "encoded",
        "Menghapus kategori by id_kategori_buku");
    //end delete kategori buku
    //Ambil Semua Data kategori buku
    $input_readall = array(); // parameter ambil data kategori
    $return_readall = array("return" => "tns:kategoriArray");
    $server->register('readall',
        $input_readall,
        $return_readall,
        $ns,
        "urn:".$ns."/readall",
        "rpc",
        "encoded",
        "Mengambil Semua Data kategori Buku");
    //Ambil Semua Data kategori buku
    ################################Kategori BUKU#######################################################
    ###########################FUNCTION KATEGORI BUKU###################################################
    function create($kategori_buku){
        require_once 'classDb/Classkategori.php';
        $kategori = new Classkategori;
        if ($kategori->create($kategori_buku)) {
            $respon = "sukses";
        }else{
            $respon = "error";
        }
        return $respon;
    }
    function readbyid($id_kategori_buku){
        require_once 'classDb/Classkategori.php';
        $kategori = new Classkategori;
        $hasil = $kategori->readbyid($id_kategori_buku);
        $daftar = array();
        while ($item = $hasil->fetch_assoc()) {
            array_push($daftar, array('id_kategori_buku'=>$item['id_kategori_buku'],'kategori_buku'=>$item['kategori_buku']));
        }
        return $daftar;
    }
    function readall(){
        require_once 'classDb/Classkategori.php';
        $kategori = new Classkategori;
        $hasil = $kategori->readAll();
        $daftar = array();
        while ($item = $hasil->fetch_assoc()) {
            array_push($daftar, array('id_kategori_buku'=>$item['id_kategori_buku'],'kategori_buku'=>$item['kategori_buku']));
        }
        return $daftar;
    }
    function updatebyid($id_kategori_buku,$kategori_buku){
        require_once 'classDb/Classkategori.php';
        $kategori = new Classkategori;
        if ($kategori->updatebyid($id_kategori_buku,$kategori_buku)) {
            $respon = "sukses";
        }else{
            $respon = "error";
        }
        return $respon;
    }
    function deletebyid($id_kategori_buku){
        require_once 'classDb/Classkategori.php';
        $kategori = new Classkategori;
        if ($kategori->deletebyid($id_kategori_buku)) {
            $respon = "sukses";
        }else{
            $respon = "error";
        }
        return $respon;
    }

    $server->service(file_get_contents("php://input"));
 ?>

Kalo masih kesulitan, download aja yang sudah jadi disini.

Selamat mencoba, semoga bermanfaat.

20 thoughts on “CRUD Web Service SOAP WSDL Menggunakan Nusoap

  1. agustri Balas

    Kalau menggunakan WSDL gimana ya caranya, apakah kita include dulu di atas. saya ada case mencari konversi Gram ke kilogram menggunakan WSDL

  2. Albert Manalu Balas

    gan ini mantep banget, tapi ane pake windows 7+ xampp, tapi ada issue nih di function readall seperti yang agan bilang di artikel ini. Sepertinya ada issue mengenai passing multidimensi array ya mas?

    • fadlur PenulisBalas

      Iya gan, kemarin ada yang comment di video yang ane posting di youtube. Katanya udah dia oprek ada mis di pemanggilan alamatnya dibagian ini.

      $ns = “http://”.$_SERVER[‘HTTP_HOST’].”/wsperpus/wskategori.php”; diubah menjadi

      $ns = “http://”.$_SERVER[‘HTTP_HOST’].”/wsperpus/wskategori.php?wsdl”; dan ada beberapa satu lagi bagian yang perlu diedit, tapi ane bener2 lupa gan. komennya udah keburu dihapus sama orangnya.

      • Albert Manalu Balas

        Kalo ane sih ganti nya bukan di ns nya, tapi hapus bagian addcomplextype, terus di bagian register readall ane ganti juga gan
        aneg ganti jadi bgni gan : $return_readall = array(‘output’ => ‘xsd:Array’);

        • fadlur PenulisBalas

          Setelah diubah data udah bisa tampil gan? Kalo iya nanti ane edit artikelnya sekalian.

          • jacky supit

            iya gan, ganti jadi xsd:Array
            jadi jalan semua.
            makasih buat tutorialnya gan. semoga berkah.

  3. Pingback: Web service php dan nusoap library | Coding Tweaks

  4. danny Balas

    ini cara nge -run nya cemana nya kak? kok ku panggil di browser yang nampak cuman nusoap nya aja

Tinggalkan Balasan

This site uses Akismet to reduce spam. Learn how your comment data is processed.