Cara menggunakan soap header php

Pada tutorial kali ini kita akan membahas tentang mengenal apa itu PHP Soap, Soap merupakan singkatan dari Simple Object Access Protocol yaitu merupakan standarisasi dari protocol komunikasi untuk saling bertukar informasi atau pesan yang berbasis xml melalui jaringan computer pada suatu sistem operasi (OS) dengan menggunakan HTTP dan XML sebagai mekanisme pertukaran data, maka SOAP dapat berkomunikasi dengan berbagai aplikasi meskipun terdapat perbedaan sistem operasi, teknologi, dan bahasa pemogramannya.

Soap sangat efektif digunakan untuk berbagai macam aplikasi multi tier untuk berkomunikasi lintas sistem operasi yang berbeda dengan teknologi dan bahasa pemograman yang berbeda, dan soap didalam teknologi web service adalah sebagai protocol pemaketan untuk pesan-pesan yang digunakan secara bersamaan oleh aplikasi-aplikasi penggunanya.

Kelebihan dari SOAP adalah :

  • Merupakan bahasa platform, dan transport agnostic
  • Merupakan standar yang digunakan untuk web service
  • Built-in error handling (faults)
  • Extensibility

Kekurangan dari SOAP adalah :

  • Sulit dikembangkan karena membutuhkan tools
  • Membutuhkan lebih banyak pernyataan atau kode program
  • Secara konseptual lebih sulit dibanding REST

Stuktur dari SOAP yaitu :

  • Envelope : merupakan sebuah element yang mengindentifikasi document XML sebagai sebuah pesan SOAP
  • Header : merukan sebuah element yang berisikan informasi header
  • Body : merupakan element yang berisi panggilan dan merespon informasi
  • Fault : merupakan sebuah element yang berisi pesan kesalahan yang terjadi pada waktu proses

Untuk sturktur dari soap message yaitu seperti dibawah ini :

<xml version="1.0">

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3org/2001/12/soap-encoding">

<soap:Header>

....

</soap:Header>

<soap:body>

.......

<soap:vault>

...........

</soap:vault>

</soap:body>

</soap:envelope>

Pada script di atas pada bagian header berfungsi untuk menyimpan informasi yang berhubungan dengan proses pengiriman autentikasi. Sedangkan bagian body menyimpan message yang akan di proses.

Oke teman-teman itulah pembahasan kita tentang Mengenal Apa itu PHP SOAP, semoga bermanfaat

Terimakasih.

  • Cari disini...
  • Browse

    • Katalog Kelas

      Ikuti materi yang kamu butuhkan

    • Roadmap

      Belajar online dengan terarah

    • Bootcamp

      Codepolitan x Catamyst

  • Explore

    • Tutorial & Artikel

      Temukan Artikel menarik

    • Podcast

      Podcast seputar pemrograman

    • Webinar

      Ikuti Berbagai Webinar

  • Event

    Temukan Event menarik

  • Beasiswa

    Program Beasiswa

  • Discord

    Komunitas Discord

  • Forum

    Diskusi antar Programmer

  • Leaderboard

    Ranking siswa Codepolitan

  • Partnership

    • For Company

      Solusi tepat untuk perusahaan

  • For School

    Kerjasama untuk sekolah

  • For Campus

    Kerjasama untuk kampus

  • For Mentor

    Peluang penghasilan untuk mentor

  • Career
  • LoginRegister

    Web Service – Cara Menampilkan Data (Read)

    Cara Menampilkan Data (Read) – Tutorial kali ini akan mengulas bagaimana cara menampilkan data dari server ke klien pada konsep pemrograman web service. Pada web service ini kita gunakan fungsi NUSOAP. Oia Untuk model web service pada tutorial kali ini kita menggunakan model SOAP. Untuk tutorial berikutnya akan kita bahas tentang web service dengan model REST.

    Menampilkan data dari tabel database yang berada pada server tidaklah sulit. Yang perlu di pahami adalah komponen dari model web service itu sendiri. Untuk model SOAP kita harus membuat sebuah program di server yang berfungsi untuk menampilkan data, nah dari script php tersebut kita akan panggil di client menggunakan url akses yang di berikan dari server.

    Seperti Cerita diatas,

    Inti dari web service adalah server dan client, jadi aplikasi ini mampu berjalan di server dan juga client. Yang mana aplikasi tersebut berjalan dan saling bertukar data melalui url. Untuk Konsep data yang di tukar menggunakan xml.

    Oke langsung Saja kita mulai cara membuat aplikasi web service untuk menampilkan data, untuk folder projeknya contoh ini kita buat saja dengan folder “WS” pada server kamu, kemudian langkah-langkahnya:

    Server:

    Buat folder 1 lagi yaitu “server” di dalam foder WS, folder ini untuk meletakkan contoh script server yang akan kita gunakan sebagai web service.

    1. Buat database dan tabel seperti berikut ini, pada contoh ini database dengan nama “ukm” dan nama tabel “barang“, Jadi ceritanya kita akan menampilkan data pada aplikasi ukm yaitu data barang. Kemudian buat isi tabel dengan query sql di bawah ini:

    -- phpMyAdmin SQL Dump
    -- version 4.5.1
    -- http://www.phpmyadmin.net
    --
    -- Host: 127.0.0.1
    -- Generation Time: May 09, 2017 at 02:21 PM
    -- Server version: 10.1.10-MariaDB
    -- PHP Version: 5.6.19
    
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    /*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
    /*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
    /*!40101 SET @[email protected]@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8mb4 */;
    
    --
    -- Database: `ukm`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Table structure for table `barang`
    --
    
    CREATE TABLE `barang` (
     `idBarang` int(11) NOT NULL,
     `kodeBarang` varchar(15) NOT NULL,
     `namaBarang` varchar(200) NOT NULL,
     `satuanBarang` varchar(15) NOT NULL,
     `stokBarang` int(11) NOT NULL,
     `hargaBarang` int(11) NOT NULL,
     `foto` varchar(250) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
    --
    -- Dumping data for table `barang`
    --
    
    INSERT INTO `barang` (`idBarang`, `kodeBarang`, `namaBarang`, `satuanBarang`, `stokBarang`, `hargaBarang`, `foto`) VALUES
    (2, 'KB-MHJ', 'Jilbab Panjang', 'pcs', 100, 15000, 'Islamic_Wallpaper_Allah_014-1440x900.jpg'),
    (3, 'KP-WHDP', 'Dompet Wanita Dua Pari Hijau', 'pcs', 100, 10000, 'tulis.jpg'),
    (4, 'HK-B', 'Handuk Kecil Biru', 'pcs', 100, 23000, '1094969_hand_writing.jpg'),
    (19, 'Ax', 'Ax', 'pcs', 11, 17000, ''),
    (25, 'KP', 'Kopiah', 'pcs', 23, 12000, '');
    
    --
    -- Indexes for dumped tables
    --
    
    --
    -- Indexes for table `barang`
    --
    ALTER TABLE `barang`
     ADD PRIMARY KEY (`idBarang`);
    
    --
    -- AUTO_INCREMENT for dumped tables
    --
    
    --
    -- AUTO_INCREMENT for table `barang`
    --
    ALTER TABLE `barang`
     MODIFY `idBarang` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=26;
    /*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
    /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
    /*!40101 SET [email protected]_COLLATION_CONNECTION */;
    
    

    2. Download nusoap, kemudian letakkan fungsi ini di folder projek WS->SERVER, Oke kemudian buat file dengan nama server.php di folder tersebut . File inilah yang akan kita gunakan sebagai server web service. Dan isi dari file ini sebagai berikut:

    configureWSDL('WEB SERVICE UKM', 'urn:barangServerWSDL'); // configure WSDL file
    $server->wsdl->schemaTargetNamespace = $ns; // server namespace
    ########################Data Barang##############################################################
     // Complex Array Keys and Types Data Barang++++++++++++++++++++++++++++++++++++++++++
     $server->wsdl->addComplexType("barangData","complexType","struct","all","",
     array(
     "idBarang"=>array("name"=>"idBarang","type"=>"xsd:int"),
     "kodeBarang"=>array("name"=>"kodeBarang","type"=>"xsd:string"),
     "namaBarang"=>array("name"=>"namaBarang","type"=>"xsd:string"),
     "satuanBarang"=>array("name"=>"satuanBarang","type"=>"xsd:string"),
     "hargaBarang"=>array("name"=>"hargaBarang","type"=>"xsd:int"),
     "stokBarang"=>array("name"=>"stokBarang","type"=>"xsd:int")
     )
     );
     // Complex Array Data Barang++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     $server->wsdl->addComplexType("barangArray","complexType","array","","SOAP-ENC:Array",
     array(),
     array(
     array(
     "ref"=>"SOAP-ENC:arrayType",
     "wsdl:arrayType"=>"tns:barangData[]"
     )
     ),
     "barangData"
     );
     // End Complex Type kategori++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    ########################/Data Barang##############################################################
    ########################/Register Data Barang######################################################
    //Ambil Semua Data Barang
     //$input_readall = array(); // parameter ambil data kategori
     //$return_readall = array("return" => "xsd:barangArray");
     $server->register('readall', // method name
     //$input_readall,
     //$return_readall,
     array('input' => 'xsd:String'), // input parameters
     array('output' => 'xsd:Array'), // output parameters
     $ns, // namespace
     "urn:".$ns."/readall", // soapaction
     "rpc", // style
     "encoded", // use
     "Mengambil Semua Data Barang"); // documentation
    //Ambil Semua Data Barang
    
    function readall() {
    
    $server = "localhost";
    $username = "root" ;
    $password = "" ;
    $database = "ukm";
    
    $con = new mysqli($server,$username,$password,$database);
    if($con->connect_error){
     die("Koneksi gagal: ".$con->connect_error);
    }
    $r = $con->query("SELECT * FROM barang");
    while($value= $r->fetch_assoc())
     {
    $return_value[] = array(
     'id'=> $value['idBarang'],
     'kode'=> $value['kodeBarang'],
     'nama'=> $value['namaBarang'],
     'satuan'=> $value['satuanBarang'],
     'harga'=> $value['hargaBarang'],
     'stok'=> $value['stokBarang']
     );
     }
     return $return_value;
    }
    
    /////////////////////////
    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
    $server->service($HTTP_RAW_POST_DATA);
    ?>
    
    

    Dan jika script server tersebut sudah berhasil maka akan dapat langsung di akses dan menghasilkan tampilan seperti ini:

    Output wsdl web service

    Output respone xml web service

    Penjelasan:

    require_once(‘lib/nusoap.php’);

    Merupakan library nusoap untuk web service

    $ns = “http://”.$_SERVER[‘HTTP_HOST’].”/ws/server/server.php”;//setting namespace

    Merupakan namspace atau endpoint dari target server yang digunakan

    $server = new soap_server();
    $server->configureWSDL(‘WEB SERVICE UKM’, ‘urn:barangServerWSDL’); // configure WSDL file
    $server->wsdl->schemaTargetNamespace = $ns; // server namespace
    ########################Data Barang##############################################################
    // Complex Array Keys and Types Data Barang++++++++++++++++++++++++++++++++++++++++++
    $server->wsdl->addComplexType(“barangData”,”complexType”,”struct”,”all”,””,
    array(
    “idBarang”=>array(“name”=>”idBarang”,”type”=>”xsd:int”),
    “kodeBarang”=>array(“name”=>”kodeBarang”,”type”=>”xsd:string”),
    “namaBarang”=>array(“name”=>”namaBarang”,”type”=>”xsd:string”),
    “satuanBarang”=>array(“name”=>”satuanBarang”,”type”=>”xsd:string”),
    “hargaBarang”=>array(“name”=>”hargaBarang”,”type”=>”xsd:int”),
    “stokBarang”=>array(“name”=>”stokBarang”,”type”=>”xsd:int”)
    )
    );
    // Complex Array Data Barang++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    $server->wsdl->addComplexType(“barangArray”,”complexType”,”array”,””,”SOAP-ENC:Array”,
    array(),
    array(
    array(
    “ref”=>”SOAP-ENC:arrayType”,
    “wsdl:arrayType”=>”tns:barangData[]”
    )
    ),
    “barangData”
    );
    // End Complex Type barang+++++++++++++++++++++++++++++++++

    Merupakan pendeskripsian xml yang menjadi output dari server

    $server->register(‘readall’, // method name
    array(‘input’ => ‘xsd:String’), // input parameters
    array(‘output’ => ‘xsd:Array’), // output parameters
    $ns, // namespace
    “urn:”.$ns.”/readall”, // soapaction
    “rpc”, // style
    “encoded”, // use
    “Mengambil Semua Data Barang”); // documentation
    //Ambil Semua Data Barang

    Merupakan registrasi atau pendaftaran fungsi yang akan kita panggil nantinya pada client. Pada script diata fungsi yang kita daftar adalah “readall

    function readall() {

    $server = "localhost";

    $username = "root" ;

    $password = "" ;

    $database = "ukm";

    $con = new mysqli($server,$username,$password,$database);

    if($con->connect_error){

     die("Koneksi gagal: ".$con->connect_error);

    }

    $r = $con->query("SELECT * FROM barang");

    while($value= $r->fetch_assoc())

     {

    $return_value[] = array(

     'id'=> $value['idBarang'],

     'kode'=> $value['kodeBarang'],

     'nama'=> $value['namaBarang'],

     'satuan'=> $value['satuanBarang'],

     'harga'=> $value['hargaBarang'],

     'stok'=> $value['stokBarang']

     );

     }

     return $return_value;

    }

    Dan fungsi diataslah yang menampilkan data untuk di baca di client.

    Client:

    Sekarang kita masuk ke klien untuk menampilkan data Copy kan juga library nusoap yang kita letakkan di dalam folder server tadi ke folder WS (di luar bukan di server), karena script client ini juga membutuhkan fungsi library yang ada pada nusoap.

    1. Buat script untuk client dengan nama client.php (bisa juga yang lain), Kemudian isi file tersebut seperti ini:

    getError();
    if ($err) {
     echo '

    Constructor error

    ' . $err . '
    '; } $param = ""; $result = $client->call('readall',array($param)); //echo $client->response; //echo $client->request; if (!empty($result)) { echo "

    Read

    Create "; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; foreach ($result as $item) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
    IdKodeNamaSatuanHargaStokAction
    ".$item['id']."".$item['kode']."".$item['nama']."".$item['satuan']."".$item['harga']."".$item['stok']."ReadEditDelete
    "; } ?>

    Penjelasan: