Web Service – SOAP- Cara Menampilkan Data (Read)

By , May 9, 2017,
Web Service - Cara Menampilkan Data (Read)

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.

Cara Menampilkan Data (Read)

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 @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@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 CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_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:


<?php
require_once('lib/nusoap.php');
$ns = "http://".$_SERVER['HTTP_HOST']."/ws/server/server.php";//setting namespace
$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 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 wsdl web service

Output respone xml 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:


<?php
require_once('lib/nusoap.php');
$client = new nusoap_client('http://127.0.0.1/ws/server/server.php?wsdl', true);

$err = $client->getError();
if ($err) {
 echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}

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

 echo "<h1>Read</h1>
 <a href='create.php'>Create</a>
 <table border=1>";
 echo "<tr bgcolor='#cccccc'>";
 echo "<th>Id</th>";
 echo "<th>Kode</th>";
 echo "<th>Nama</th>";
 echo "<th>Satuan</th>";
 echo "<th>Harga</th>";
 echo "<th>Stok</th>";
 echo "<th colspan='3'>Action</th>";
 echo "</tr>";
 foreach ($result as $item) {
 echo "<tr>";
 echo "<td>".$item['id']."</td>";
 echo "<td>".$item['kode']."</td>";
 echo "<td>".$item['nama']."</td>";
 echo "<td>".$item['satuan']."</td>";
 echo "<td>".$item['harga']."</td>";
 echo "<td>".$item['stok']."</td>";
 echo "<td><a href='read.php?id=".$item['id']."'>Read</a></td>";
 echo "<td><a href='update.php?id=".$item['id']."'>Edit</a></td>";
 echo "<td><a href='delete.php?id=".$item['id']."'>Delete</a></td>";
 echo "</tr>";
 }
 echo "</table>";

}
?>

Penjelasan:

Postingan berikutnya

  1. dalam library nusoap pada wsdl kita input tipe data tapi parameter outputnya array?
  2. memmbuat tampil data pada web service server

Leave a Reply

Your email address will not be published. Required fields are marked *