bab 1 client server (finished)

17
Bab 1 Client Server POKOK BAHASAN: Pengenalan Android Service Client Server TUJUAN PEMBELAJARAN: Setelah mempelajari materi dalam bab ini mahasiswa diharapkan mampu: Mengenali service Client Server pada android Dapat mengimplementasikan Client Server pada Client Side Dapat mengimplementasikan Client Server pada Server Side DASAR TEORI 1. Client-Server Client-Server merupakan sebuah paradigma dalam teknologi informasi yang merujuk kepada cara untuk mendistribusikan aplikasi ke dalam dua pihak: pihak klien dan pihak server. Dalam model Client-Server, sebuah aplikasi dibagi menjadi dua bagian yang terpisah, tapi masih merupakan sebuah kesatuan yakni komponen klien dan komponen server. Komponen klien juga sering disebut sebagai front-end, sementara komponen server disebut sebagai back-end. Komponen klien dari aplikasi tersebut dijalankan dalam sebuah workstation dan menerima masukan data dari pengguna. Komponen klien tersebut akan menyiapkan data yang dimasukkan oleh pengguna dengan menggunakan teknologi pemrosesan tertentu dan mengirimkannya kepada komponen server yang dijalankan di atas mesin server, umumnya dalam bentuk request terhadap beberapa layanan yang dimiliki oleh server. Komponen server akan menerima request dari klien, dan

Upload: jauharul-azna

Post on 14-Aug-2015

98 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Bab 1 Client Server (Finished)

Bab 1

Client Server

POKOK BAHASAN:

Pengenalan Android Service Client Server

TUJUAN PEMBELAJARAN:

Setelah mempelajari materi dalam bab ini mahasiswa diharapkan mampu:

Mengenali service Client Server pada android Dapat mengimplementasikan Client Server pada Client Side Dapat mengimplementasikan Client Server pada Server Side

DASAR TEORI

1. Client-Server

Client-Server merupakan sebuah paradigma dalam teknologi informasi yang merujuk kepada cara untuk mendistribusikan aplikasi ke dalam dua pihak: pihak klien dan pihak server.

Dalam model Client-Server, sebuah aplikasi dibagi menjadi dua bagian yang terpisah, tapi masih merupakan sebuah kesatuan yakni komponen klien dan komponen server. Komponen klien juga sering disebut sebagai front-end, sementara komponen server disebut sebagai back-end. Komponen klien dari aplikasi tersebut dijalankan dalam sebuah workstation dan menerima masukan data dari pengguna. Komponen klien tersebut akan menyiapkan data yang dimasukkan oleh pengguna dengan menggunakan teknologi pemrosesan tertentu dan mengirimkannya kepada komponen server yang dijalankan di atas mesin server, umumnya dalam bentuk request terhadap beberapa layanan yang dimiliki oleh server. Komponen server akan menerima request dari klien, dan langsung memprosesnya dan mengembalikan hasil pemrosesan tersebut kepada klien. Klien pun menerima informasi hasil pemrosesan data yang dilakukan server dan menampilkannya kepada pengguna, dengan menggunakan aplikasi yang berinteraksi dengan pengguna.

2. SOAP Web Service

SOAP adalah spesifikasi protokol untuk bertukar informasi terstruktur dalam pelaksanaan Web Services dalam jaringan komputer. SOAP bergantung pada Extensible Markup Language (XML) untuk format pesannya, dan biasanya bergantung pada protokol Application Layer lainnya, terutama Hypertext Transfer Protocol (HTTP) dan Simple Mail Transfer Protocol (SMTP), untuk negosiasi pesan dan transmisi.

Page 2: Bab 1 Client Server (Finished)

SOAP terdiri dari tiga bagian: SOAP envelope construct mendefinisikan suatu framework menyeluruh untuk

mengungkapkan apa isi yang ada dalam pesan, siapa yang harus menerimanya, dan apakah pesan itu opsional atau wajib.

SOAP encoding rules mendefinisikan mekanisme serialisasi yang dapat digunakan untuk bertukar contoh aplikasi - didefinisikan tipe data.

SOAP RPC representation mendefinisikan sebuah konversi yang dapat digunakan untuk mewakili prosedur panggilan jarak jauh dan tanggapan.

Struktur SOAP Message

Contoh SOAP Message

SOAP Message dalam HTTP Request

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body></SOAP-ENV:Envelope>

SOAP Message dalam HTTP Response

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body>

Berikut ini adalah struktur SOAP Message:

Envelope adalah element paling atas dari dokumen XML yang mewakili pesan.

Header adalah element yang mendefinisikan beberapa atribut yang dapat digunakan untuk menunjukkan siapa yang harus berurusan dengan fitur dan apakah opsional atau wajib

Body merupakan wadah untuk informasi wajib ditujukan untuk penerima akhir pesan. Bagian Body SOAP mendefinisikan satu

Page 3: Bab 1 Client Server (Finished)

<m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>

Spesifikasi

Spesifikasi SOAP mendefinisikan kerangka pesan yang terdiri dari:

SOAP Processing Model mendefinisikan aturan untuk memproses pesan SOAP.

SOAP Extensibility Model mendefinisikan konsep fitur SOAP dan modul SOAP.

SOAP Underlying Protocol Binding Framework mendefinisikan sebuah peraturan untuk menggambarkan sebuah ikatan pada sebuah protocol utama yang dapat digunakan untuk bertukar SOAP Message dengan SOAP Node.

SOAP Message Construct mendefinisikan struktur dari SOAP Message.

Model Proses

Model pengolahan SOAP menggambarkan model pemrosesan terdistribusi node SOAP dan bagaimana penerima SOAP memproses pesan SOAP. Node SOAP berikut didefinisikan:

SOAP SenderNode SOAP yang mentransmisikan pesan SOAP.

SOAP ReceiverNode SOAP yang menerima pesan SOAP.

SOAP Message PathGabungan Node SOAP melalui mana pesan SOAP tunggal lewat.

Initial SOAP sender (Originator)Pengirim SOAP yang berasal pesan SOAP pada titik awal jalur pesan SOAP.

SOAP intermediarySebuah perantara SOAP adalah penerima dan pengirim SOAP, dan ditargetkan dari dalam pesan SOAP. Ini memproses blok header SOAP ditargetkan dan bertindak untuk meneruskan pesan SOAP terhadap penerima SOAP utama.

Ultimate SOAP receiverPenerima SOAP yang merupakan tujuan akhir dari pesan SOAP. Hal ini bertanggung jawab untuk memproses isi dari tubuh SOAP dan setiap blok header SOAP ditargetkan pada hal itu. Dalam beberapa situasi, sebuah pesan SOAP mungkin tidak mencapai penerima SOAP utama, misalnya karena masalah pada perantara SOAP. Penerima SOAP utama tidak bisa juga menjadi perantara SOAP untuk pesan SOAP yang sama.

Page 4: Bab 1 Client Server (Finished)

Diagram Arsitektur Web Service WSDL - SOAP

3. Server Side (NuSOAP)

Intro

NuSOAP adalah sekelompok kelas PHP yang memungkinkan pengembangan untuk membuat dan menerima layanan web SOAP. NuSOAP tidak memerlukan ekstensi PHP khusus. Versi rilis saat ini (0.6.7) dari NuSOAP mendukung banyak spesifikasi SOAP 1.1. Telah dapat menghasilkan WSDL 1.1 dan juga menerima untuk digunakan dalam serialisasi. Kedua layanan rpc/encoded dan document/literal telah support dalam NuSOAP. Namun, harus dicatat bahwa NuSOAP tidak menyediakan cakupan dari SOAP 1.1 dan WSDL 1.1 yang lengkap beberapa implementasi lain, seperti .NET dan Axis Apache.

Instalasi

Untuk dapat melakukan percobaan pada Server Side NuSOAP ada beberapa aplikasi yang harus disiapkan, antara lain;

Web developer Application = Adobe Dreamweaver Web Service Application = Xampp

Untuk mendownload library NuSOAP:

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

Cara mengimport library NuSOAP pada project Dreamweaver:1. Download library pada link diatas.2. Setelah selesai mendownload, ekstrak file.3. Masukkan dalam folder direktori yang sama dengan project server side.

Page 5: Bab 1 Client Server (Finished)

Untuk dapat mencoba hasil Server Side dari program yang telah kita buat, gunakan SOA Client Add-On pada Web Browser Mozila Firefox.

Membuat Server Side

Untuk dapat membuat program Server Side, kita diharuskan untuk memahami inti dari program tersebut, antara lain:

Library NuSOAP

require_once('lib/nusoap.php');

untuk memasukkan (include) library NuSOAP pada project.

Server SOAP

$server = new soap_server;

untuk membuat server SOAP yang baru untuk tiap project.

Setting WSDL

@server->configureWSDL(‘nama_method’);

untuk setting WSDL yang akan dijadikan sebagai Server.

Register ke server SOAP

$server->register(

);

Untuk registrasi isi dari server SOAP, yaitu antara lain :- nama method- parameter input- parameter output- namespace- SOAP Action- style- use

Fungsi SOAP

function nama($parameter) {return nilai_return;}

Untuk mendefinisikan method sebagai fungsi php yang akan menghasilkan return value pada Client Side.

Script tambahan

Page 6: Bab 1 Client Server (Finished)

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA : '';$server->service($HTTP_RAW_POST_DATA);

Berguna sebagai permintaan untuk memanggil layanan Client Server. (Harus ada dalam coding)

4. Client Side (KSOAP)

IntroKSOAP adalah API dari SOAP yang cocok untuk J2ME, berbasis kXML. Kita dapat menggunakan kSOAP pada Android untuk mengakses layanan SOAP berbasis web dengan mudah. KSOAP mendukung fitur SOAP paling sering digunakan dan cukup untuk Web Services kebanyakan yang saat ini tersedia. Saat ini, hampir semua aplikasi kSOAP utama dan alat didasarkan pada kSOAP yang mendukung subset inti SOAP.

InstalasiUntuk mendownload library kSOAP:

http://kSOAP2-android.googlecode.com/svn/m2-repo/com/google/code/kSOAP2-android/kSOAP2-android-assembly/2.6.5/kSOAP2-android-assembly-2.6.5-jar-with-dependencies.jar

Cara mengimport library KSOAP2 pada project Android:1. Pertama-tama, download terlebih dahulu library KSOAP2 pada link diatas.2. Pindahkan kSOAP2.jar hasil download dalam sebuah folder yang dapat diakses.3. Klik kanan pada Android Project yang ingin diimport library KSOAP2.4. Pilih Properties.5. Dalam Properties window, pilih Java Build Path > Libraries > Add External

JARs.6. Cari dan pilih file kSOAP2.jar yang telah didownload tadi. Kemudian klik

Open dan terakhir klik OK.

Membuat Client Side

Untuk dapat membuat program Client Side, kita diharuskan untuk memahami inti dari program tersebut, antara lain:

Parameter Message SOAP SOAP_ACTION = alamat URL yang merupakan gabungan dari lokasi file PHP

Server dan Method_Name. METHOD_NAME = nama operasi pada WSDL Server. NAMESPACE = namespace dari Web Service. URL = alamat URL dari WSDL Server yang terakhirnya ditambah ?wsdl.

String NAMESPACE = "";String METHOD_NAME = "";

Page 7: Bab 1 Client Server (Finished)

String SOAP_ACTION = "";String URL = "http://10.0.2.2/ " ; atau String URL = "http://www. " ;

10.0.2.2 merupakan alamat localhost dari Web Service Komputer yang akan diakses emulator Android karena emulator Android tidak dapat mengakses domain localhost.

Proses Pengiriman Nilai Parameter ke Web Server

PropertyInfo pi = new PropertyInfo();pi.setName("name");pi.setValue(input);pi.setType(String.class);Request.addProperty(pi);

PropertyInfo adalah variable untuk memasukkan nilai parameter yang mau dikirim ke web service. Kemudian yang akan digabung kedalam variable Request.

SoapSerializationEnvelope Class Bagian Envelope pada SOAP dibuat dengan menggunakan class

SoapSerializationEnvelope dan Request ditambahkan pada Body dalam Envelope.

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.setOutputSoapObject(request);

Karena Web Service yang digunakan adalah berbasis .NET, diperlukan setting .dotNet property disetting TRUE pada Envelope.

envelope.dotNet = true;

HttpTransportSE Class HttpTransportSE digunakan untuk membuat panggilan sebenarnya dari metode

layanan Web, amplop yang lulus sebagai parameter. Hasilnya adalah diambil dari bagian respon dari amplop.

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); androidHttpTransport.call(SOAP_ACTION, envelope);

Page 8: Bab 1 Client Server (Finished)

TUGAS PENDAHULUAN

Pahamilah langkah-langkah yang ada pada prosedur percobaan. Kemudian buatlah flowchart untuk aplikasi yang akan di buat.

TUGAS PRAKTIKUM

Buatlah sebuah aplikas Client Server menggunakan NuSOAP pada Server Side dan KSOAP pada Client Server.

Server SidePertama-tama, kita kerjakan Server Side terlebih dahulu. Dengan menggunakan

NuSOAP, program dapat terhubung dan memproses data untuk Client.

1. Buatlah sebuah file php bernama server.php, yang berisi sebagai berikut.

<?php // Pull in the NuSOAP code

require_once('lib/nusoap.php'); // Create the server instance

$server = new soap_server; $server->configureWSDL('hello'); // Register the method to expose

$server->register( 'hello', array('name' => 'xsd:string'), // input parameters array('return' => 'xsd:string'), // output parameters 'uri:helloworld', // namespace 'uri:helloworld/hello', // SOAP Action 'rpc', // style 'encoded' // use ); // Define the method as a PHP function function hello($name) { return 'Hello, ' . $name; } // Use the request to (try to) invoke the service

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA); ?>

Pada Server Side, kita membuat sebuah Server WSDL yang dikonfigurasi untuk method hello.

$server->configureWSDL('hello');

Pada program Server Side, kita mendaftarkan isi dari Server, yaitu: Nama method : hello Parameter input : variable name bertipe string Parameter output : variable return bertipe string Namespace : helloworld SOAP Action : helloworld/hello

Page 9: Bab 1 Client Server (Finished)

Style : RPC Use : encoded

$server->register('hello',

array('name' => 'xsd:string'), // input parameters array('return' => 'xsd:string'), // output parameters 'uri:helloworld', // namespace 'uri:helloworld/hello', // SOAP Action 'rpc', // style 'encoded' // use);

Definisikan method hello sebagai fungsi php, yang akan memproses parameter input dan akan mengelola parameter output yang akan dikirmkan pada Client Side.

function hello($name) {return 'Hello, ' . $name;

}

2. Untuk menguji kebenaran hasil Server Side, dapat menggunakan Add-On pada Mozilla Firefox, yaitu SOA Client. Klik kanan pada halaman web, pilih SOA Client > Access Web Service. Kemudian masukkan alamat file php yang ditambah dengan ?wsdl.

Tampilan wsdl Server pada SOA Client

3. Masukkan nilai inputan, kemudian klik Invoke. Maka muncullah hasil dari file server.php sebagai Server Side.

Page 10: Bab 1 Client Server (Finished)

Tampilan hasil percobaan program wsdl Server pada SOA Client

Client Side

Setelah Server Side selesai dibuat, kita kerjakan Client Side. Dengan menggunakan KSOAP, program dapat terhubung dan menerima data dari server.

1. Buatlah sebuah project Android baru. Untuk layout main.xml, isi program sebagai berikut.

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:paddingLeft="5dp" android:paddingRight="5dp" >

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="Input : " > </TextView>

<EditText android:id="@+id/etInput" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="input" >

<requestFocus> </requestFocus> </EditText>

<Button android:id="@+id/bOK" android:layout_width="80dp" android:layout_height="wrap_content" android:text="OK" > </Button>

Page 11: Bab 1 Client Server (Finished)

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="Output :" > </TextView>

<TextView android:id="@+id/tvOut" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="*******" android:textAppearance="?android:attr/textAppearanceMedium" > </TextView>

</LinearLayout>

Sehingga tampilan layout akan terlihat seperti berikut.

2. Untuk ClientSOAPActivity.java yang merupakan java class utama. Yang berisi sebagai berikut.

public class ClientSOAPActivity extends Activity { String NAMESPACE = "http://10.0.2.2/soap/hello"; String METHOD_NAME = "hello"; String SOAP_ACTION = "http://10.0.2.2/serverB/server.php/hello"; String URL = "http://10.0.2.2/serverB/server.php?wsdl"; String input = null; TextView tvOutput; /** Called when the activity is first created. */ @Override

Page 12: Bab 1 Client Server (Finished)

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText etInput = (EditText) findViewById(R.id.etInput); Button bOK = (Button) findViewById(R.id.bOK); tvOutput = (TextView) findViewById(R.id.tvOut); bOK.setOnClickListener(new OnClickListener(){

public void onClick(View arg0) { // TODO Auto-generated method stub input = etInput.getText().toString(); getSoap(); }

}); } private void getSoap(){ SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); PropertyInfo pi = new PropertyInfo(); pi.setName("name"); pi.setValue(input); pi.setType(String.class); Request.addProperty(pi); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(Request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); try { androidHttpTransport.call(SOAP_ACTION, envelope); Object response = envelope.getResponse(); String result = response.toString(); //System.out.println(result); tvOutput.setText(result); } catch(Exception e) { e.printStackTrace(); } }}

Pada Client Side, kita isikan parameter penghubung dengan Server Side, yaitu: NAMESPACE = namespace dari Web Service, yaitu helloworld/hello. SOAP_ACTION = alamat URL yang merupakan gabungan dari lokasi file PHP Server

dan Method_Name, yaitu http://10.0.2.2/serverB/server.php/hello. METHOD_NAME = nama operasi pada WSDL Server, yaitu hello. URL = alamat URL dari WSDL Server dan terakhirnya ditambah ?wsdl, yaitu

http://10.0.2.2/serverB/server.php?wsdl.

Karena kita menggunakan Web Service localhost, maka alamat url menggunakan 10.0.2.2 untuk alamat Web Service computer kita.

Page 13: Bab 1 Client Server (Finished)

String NAMESPACE = "http://10.0.2.2/helloworld/hello";String METHOD_NAME = "hello";String SOAP_ACTION = "http://10.0.2.2/serverB/server.php/hello";String URL = "http://10.0.2.2/serverB/server.php?wsdl";

3. Pada AndroidManifest ditambahkan permission untuk mengakses internet.

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="nov3.client" android:versionCode="1" android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".ClientSOAPActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET"></uses-permission></manifest>

Sehingga hasil dari program Client Side sebagai berikut.

LAPORAN RESMI

Buatlah laporan hasil percobaan di atas. Laporan berisikan dasar teori, langkah-langkah percobaan, hasil percobaan, analisa percobaan, dan analisa kegunaan dari aplikasi yang telah dibuat.

Page 14: Bab 1 Client Server (Finished)