• Tidak ada hasil yang ditemukan

P7 Bab 7 HTTP Connection

N/A
N/A
Protected

Academic year: 2021

Membagikan "P7 Bab 7 HTTP Connection"

Copied!
20
0
0

Teks penuh

(1)

P7

Bab 7 – HTTP Connection

7.1 Tujuan

Mahasiswa memahami konsep J2ME, HTTP Connection.

7.2 Materi

1. HTTP Connection 2. Client-Server

7.3 Pendahuluan

• HTTP Connection merupakan fitur J2ME yang memungkinkan perangkat mobile (GPRS + Java) melakukan hubungan dengan web server.

• Hubungan yang dilakukan :

◦ Request → client

◦ Respon → server (berdasarkan permintaan client)

7.4 Generic Connection Framework

• GCF merupakan sebuah Application Programming Interface (API) yang terdiri atas sekumpulan class dan interface yang digunakan untuk membangun koneksi client-server.

• GFC merupakan API yang disediakan oleh :

◦ MIDP (Mobile Information Device Profile)

◦ CLDC (Connected Limited Device Configuration)

• Perkembangan : ◦ MIDP 1.0 ▪ Connection → HTTP ◦ MIDP 2.0 ▪ Coonection → HTTP ▪ Update → HTTPS

• Library GFC, merupakan perpaduan antara paket :

(2)

Struktur Antarmuka GCF

• Class utama yang digunakan untuk membangun koneksi adalah class Connector (dalam class javax.microedition.io), fungsinya :

◦ Interpreter (penerjemah) URL

◦ Instantiator (membuat object)

◦ Memilih interface

7.5 HTTP Connection

• HTTP (Hypertext Transfer Protocol), merupakan sebuah procedure yang digunakan untuk pertukaran data pada aplikasi berbasis web.

• Inti dari koneksi HTTP → client-server

• Proses :

1. Membangun object HttpConnection menggunakan method open pada class Connector secara statis,

2. Mengatur method request (GET / POST), 3. Mengatur header request yang dibutuhkan

4. Membuat object Stream Output dengan method

openOutputStream/openDataOutputStream untuk menampung data pada body request, 5. Menuliskan data pada body request untuk dikirim ke server,

6. Membuat object Stream Input dengan method openInputStream/openDataInputStream untuk membaca data yang dikirim server,

7. Membaca status respon server dengan method getResponseCode(), jika berhasil Connection

InputConnection OutputConnection DatagramConnection

StreamConnection +UDPDatagramConnection

+CommConnection ContentConnection +SocketConnection StreamConnectionNotifier

HttpConnection +SecureConnection +ServerSocketConnection

(3)

dilanjutkan dengan pembacaan data respons dengan object Stream Input, 8. Menutup koneksi, input, dan output stream.

Step 1 : Me mbuat object HTTP Connection

• Class yang disediakan oleh GCF untuk membangun koneksi adalah Class Connector.

• Class Connector mempunyai method open yang dipanggil secara static untuk mendapatkan object Connection yang kemudian dapat di-casting kepada connection class yang sesuai (Ex : HttpConnection).

• Deklarasi method open pada class Connector 1 : 1 Connection Connector.open(String name) Keterangan :

• name → nama request yang akan dikirim ke server dalam bentuk url. Contoh :

HttpConnection contoh1 = (HttpConnection) Connector.open(“http://localhost/project_9/”);

• Deklarasi method open pada class Connector 2 :

2 Connection Connector.open(String name, int mode) Keterangan :

• mode → mode akses yang dikirim/diterima Contoh :

HttpConnection contoh2 = (HttpConnection)

Connector.open(“http://localhost/project_9/proses.php”,Connector.READ_WRITE);

• Deklarasi method open pada class Connector 3 :

3 Connection Connector.open(String name, int mode, boolean timeouts) Keterangan :

• timeouts → batas waktu saat membangun koneksi Contoh :

1

(4)

Step 2 : Mengatur Method Request

• Client memiliki tiga buah cara (method) untuk melakukan request ke server :

◦ HEAD

◦ POST

◦ GET (method GET secara default akan menjadi method request jika method tidak ditentukan)

• Deklarasi method :

setRequestMethod(String request) Keterangan → parameter String request :

• GET

◦ Mengirimkan data dengan parameter URL.

◦ Method ini tidak mengizinkan pengiriman data bersamaan pada saat request, tetapi method ini mengizinkan penggunaan header.

◦ Konstanta :

HttpConnection.GET

• POST

◦ Data dikirim pada body request, sehingga lebih leluasa dalam mengirim data.

◦ Data disembunyikan dari user, sehingga keamanan lebih terjaga.

◦ Konstanta :

HttpConnection.POST

• HEAD

◦ Method ini hanya mengirim/menerima header.

◦ Hanya dapat digunakan untuk menerima informasi dari server.

◦ Konstanta :

HttpConnection.HEAD

• Contoh :

HttpC.setRequestMethod(HttpConnection.GET); Step 3 : Mengatur Header Request

• Deklarasi method :

(5)

• Setiap header mempunyai parameter name dan value sebagai informasi yang akan disampaikan ke server.

• Header request mengikuti perintah request yang lebih banyak digunakan pada method POST.

• name dan value yang dapat digunakan dalam header request :

Name Keterangan

Connection Nilai yang digunakan adalah "Close".

• Jika nilai ini diberikan, maka koneksi akan ditutup setelah server melayani permintaan client.

• Jika header ini tidak digunakan, maka koneksi yang sama dapat digunakan untuk mengirimkan data berulang kali.

Content-Length Menunjukan jumlah byte data yang dikirim ke server, nilai yang digunakan merupakan seluruh bilangan yang ditulis dalam string, ex : 255 menunjukan 255 byte data

Content-Type Menunjukan pengkodean yang digunakan pada isi data, nilai yang dapat diberikan :

• text/html

• text/html;charset=ISO-8859-1

• application/x-www-form-urlencoded Date Menunjukan tanggal dan jam pengiriman data. Last-Modified Menunjukan perubahan terakhir pada data.

Location Digunakan web server untuk membuka halaman lain (redirect ke halaman lain), nilai dalam bentuk URL.

User-Agent Digunakan untuk mengirimkan informasi spesifikasi client yang melakukan request. Ex : Profile/MIDP-2.0 Configuration CLDC-1.0.

• Contoh : 1 2

httpC.SetRequestProperty (“Content-Type”, “text/plain”); httpC.SetRequestProperty (“Connection”, “close”);

Step 4 : Membuat Object Stream Output Request

• Data request dapat dilakukan dengan dua cara :

◦ Melalui parameter URL pada method GET

◦ Melalui body request pada method POST

• Langkah awal dalam menggunakan method POST, yaitu membuat object Stream Output dengan menggunakan object HttpConnection dengan method berikut :

(6)

Atau :

2 DataOutputStream openDataOutputStream() Keterangan :

• Yang membedakan method 1 dan 2 adalah data yang dapat ditampung oleh masing-masing Stream.

• Method 1 (OutputStream) → data : array bit dan integer

• Method 2 (DataOutputStream) → data : string, char, bytes, integer, long, dan sebagainya.

• Contoh : 1 2

OutputStream data1 = httpC.openOutputStream();

DataOutputStream data2 = httpC.openDataOutputStream();

Step 5 : Menulis Data Pada Body Request

• Setelah object stream output dibuat, langkah selanjutnya yaitu menuliskan data yang akan dikirim ke dalam body request dengan menggunakan object stream output.

• Method : 1 2 3 4 5 6 7 8 9 10 11

void write (byte[]data) void write (int data)

void write (byte[]data, int offset, int length)

void writeBoolean (boolean value) void writeByte (int value)

void writeChar (int value) void writeChars (String data) writeInt (int value)

writeLong (long value) writeShort (int value)

void writeUTF (String data); Keterangan :

• Stream OutputStream (1) → hanya memiliki 3 method (baris 1 – 3)

• Stream DataOutputStream (2) → memiliki 11 method (baris 1 - 11)

• Pendeklarasian dari data yang akan ditulis : nama_variable = nilai_variable Keterangan :

• Jika data yang ditulis lebih dari satu, dapat digunakan operator “&” untuk menambahkan.

• Jika data yang ditulis lebih dari satu kata, dapat digunakan operator “+” untuk menghubungkan data tersebut.

1

(7)

• Contoh : 1 2 3 4 String data1=“nim=10111071&nama=Annisa+Retno+Sari&prodi=teknik+informatika”; DataOutputStream data2=httpC.openDataOutputStream(); data3.write(data.getBytes)); data3.writeUTF(data2);

Step 6 : Mengetahui Respon Dari Server

• Setelah melakukan pengiriman request, server akan menanggapi dengan mengirimkan status pengiriman dan data yang diminta. Jika request berhasil maka server akan mengirimkan status HTTP_OK.

• Method yang digunakan untuk mengetahui status respon dari server : int getResponseCode()

Keterangan :

• method tersebut akan mengembalikan nilai integer yang terkandung pada konstanta-konstanta seperti yang tertera pada tabel berikut.

Constanta Keterangan

HTTP_OK:200 Request berhasil

HTTP_MOVED_PERM:301 URL yang diminta diarahkan secara permanen ke alamat URL yang ditulis di header Location

HTTP_MOVED_TEMP:302 URL yang diminta sementara diarahkan ke alamat URL baru yang ditulis di header Location

HTTP_SEE_OTHER:303 URL yang diminta dapat diminta dengan method GET HTTP_BAD_REQUEST:400 Request gagal, karena tidak sesuai dengan penulisan request

HTTP_FORBIDDEN:403 Request benar, tetapi client tidak diizinkan mengaksses URL tersebut HTTP_NOT_FOUND:404 URL yang diminta tidak ditemukan

Step 7 : Membuat Object Input Stream

• Selanjutnya membuat object stream input, dengan method : 1 InputStream openInputStream()

Atau :

(8)

Keterangan :

• Yang membedakan method 1 dan 2 adalah data yang dapat ditampung oleh masing-masing Stream.

• Method 1 (InputStream) → data : array bit dan integer

• Method 2 (DataInputStream) → data : string, char, bytes, integer, long, dan sebagainya. • Contoh : 1 2 3 4 5 6 7 8 9 10 11 12 13 HttpConnection hc = null; DataInputStream dis = null;

hc = (HttpConnection) Connection.open(“http://localhost/project_dnd/”); switch (hc.getResponCode()) { case HttpConnection.HTTP_OK : dis = hc.openDataInputStream(); // baca data break; case HttpConnection.HTTP_NOT_FOUND : default :

// penanganan saat terjadi kegagalan reqquest }

Step 9 : Membaca Data Respons Server

• Source code untuk mendapatkan data respons yang dikirim oleh server : 1 2 3 4 5 6 7 8 dis = hc.openDataInputStream(); int pjg = (int) hc.getLength(); if (pjg != -1)

{

byte[] inputDt = new byte[pjg]; dis.read(inputDt);

objectTextBox.setString(new String(inputDt)); }

Keterangan :

• 2 = membaca panjang data respons pada object HttpConnection

• 3 = memastikan data yang dapat dibaca, jika panjang data bernilai -1, berarti tidak ada data yang dapat dibaca.

• 5 = Membuat varable array byte untuk menyimpan hasil pembacaan data.

• 6 = object stream input memanggil method read(), dengan parameter array byte

• 7 = hasil akhir

Step 10 : Menutup Koneksi

• Selanjutnya yang perlu dilakukan adalah menutup koneksi (Input Stream dan Output Stream) yang digunakan untuk membebaskan resource yang telah dipakai.

(9)

1 2 3 4 5 6 7 8 try { if (hc != null) { hc.clode(); } if (dis != null) { dis.close(); } } catch (IOException e) { ex.printStrackTrace(); }

7.6 AirTime Configuration

• Pada saat melakukan eksekusi terhadap source code yang telah dibuat, maka akan terlihat AirTime sebagai berikut :

• Konfigurasi :

(10)

◦ Selanjutnya dibagian menu Platforms, klik J2ME → Sun Java(TM) Wireless Toolkit 2.5.2 for CLDC.

(11)

◦ Selanjutnya pada menu Category, pilih Security kemudian pilih konfigurasi berikut :

▪ Security Policy → MSA

▪ Security domain → manufacturer

◦ Terakhir klik button OK.

7.7 Text File Access From Server

Ilustrasi :

(12)

Step 1 : Persiapan

• Pastikan web server sudah terinstall. Jika belum silahkan lihat tutorial installasi di :

◦ http://sidiq.mercubuana-yogya.ac.id/how-to-install-apache-php-mysql-and-phpmyadmin-on-linux-ubuntu/

◦ http://sidiq.mercubuana-yogya.ac.id/how-to-install-apache-php-mysql-and-phpmyadmin-on-windows-7/

• Pastikan web server sudah berjalan :

• Buat directory Project_P9 di directory "/var/www/".

Step 2 : Pesan.txt

(13)

Step 3 : Network1.java

• Buat project baru di Netbeans dengan nama "Project_P9",

• Buat file Midlet dan simpan dengan nama Network1.java. Network1.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /* ====================================== * Akses Text File (*.txt) dari server * author @ SQ ======================================== */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.io.*; import javax.microedition.io.*;

public class Network1 extends MIDlet implements CommandListener {

Command exitCommand = new Command("Exit", Command.EXIT, 2); Command nextCommand = new Command("Next", Command.OK, 2); Display display;

Form f1, f2; String pesan;

public void startApp() {

f1 = new Form("Koneksi Server");

f1.append("Latihan membuat koneksi ke server"); f1.addCommand(exitCommand);

f1.addCommand(nextCommand); f1.setCommandListener(this);

//set current display to the location screen Display.getDisplay(this).setCurrent(f1); }

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}

(14)

39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 String lbl = c.getLabel(); if ("Exit".equals(lbl)) { notifyDestroyed(); } else if ("Next".equals(lbl)) { doDownload(); } }

private void doDownload() {

f2 = new Form ("Info Dari Server"); pesan = "";

String URLsite = "http://localhost/project_9/pesan1.txt"; // url HttpConnection con = null;

InputStream in = null;

StringBuffer data = new StringBuffer(); //untuk sekumpulan data string try

{

con = (HttpConnection)Connector.open(URLsite); in = con.openInputStream();

int ch;

//selama tidak -1 (akhir file), baca semua data while((ch = in.read()) != -1)

{

data.append((char)ch); }

pesan = data.toString(); //menampilkan semua data di StringBuffer f2.append (pesan); Display.getDisplay(this).setCurrent(f2); } catch(IOException e) {} } }

(15)

7.8 PHP File Access From Server

Ilustrasi

(16)

Step 2 : Network2.java

(17)

7.9 PHP File With Parameter Access From Server

Step 1 : Pesan2.php

(18)

Step 3 : Hasil Eksekusi

7.7 Evaluasi

Petunjuk :

• Tugas individu :

• Pada pembahasan RMS yang sub bab 7.1 – 7.9, pelajarilah dan pahamilah dengan seksama.

• Coba dan pahamilah sample yang telah diberikan. Dengan syarat tidak boleh menggunakan identifier (object, class, method) seperti yang tercantum dalam contoh program pada pembahasan di atas.

• Tugas individu akan dipertanggung jawabkan.

• Tugas kelompok :

• Mengajukan tema dan nama-nama Anggota Kelompok Maksimal 3 Orang (Kelas 21) / 2 Orang (Kelas 22)

• Sebagai syarat UTS Ketentuan Tugas kelompok :

• Tema bebas (Tidak boleh sama --> berlaku sistem gugur / siapa cepat dia dapat)

• Buatlah tabel (minimal 3 tabel yang terdiri dari 2 tabel sumber dan 1 tabel transaksi)

• Buatlah relasi database – nya Output Laporan :

1. Cover --> Menyertakan nama kelompok (pilih 1 sebagai ketua kelompok (ditunjukkan dengan penulisan nomor urut ke 1))

2. Bab I : Pendahuluan --> berisi uraian singkat mengenai alasan memilih tema tersebut 3. Bab II : Skema database

(a) Tabel – tabel dalam database (b) Relasi database

(19)

4. Surat pernyataan kesediaan untuk belajar secara bersungguh-sungguh dengan penanggung jawab ketua kelompok, dan anggota menyetujui (Syarat : scanning tanda tangan masing-masing ketua dan anggota)

• Secara otomatis, ketua bertanggung jawab terhadap anggota dan sebaliknya.

• Secara otomatis, jika salah satu anggota kelompok yang tidak bisa/tidak paham juga merupakan tanggung jawab ketua kelompok dengan dukungan dari anggota kelompok.

Nb :

• Wajib menyertakan bookmark (jika tidak ada, poin laporan dikurangi 50) Pengumpulan :

• Tugas yang dikirimkan hanyalah tugas kelompok, sedang tugas individu tanggung jawab masing-masing individu.

• Rentang pengiriman tema :

• Start date : 30 October 2013

• End date : 04 October 2013

• Tugas dikumpulkan melalui FB dengan ketentuan sebagai berikut :

• Tiap kelompok diwakili satu orang (yang mengirim)

• File Name & Mail Subject :

• Kelas 21 : P7_MC_21-NIM ◦ Ex – File Name : P7_MC_21-11111034.pdf ◦ Ex – Mail Subject : P7_MC_21-11111034 • Kelas 22 : P7_MC_22-NIM ◦ Ex – File Name : P7_MC_22-11111034.pdf ◦ Ex – Mail Subject : P7_MC_22-11111034 • Email :

(20)

class ofSuccess{

private GoodIdea(){

if ((HardWork==Good)&&(Intention==Good)&&(WillPower==Good)){ System.out.print("Success ...!"); } else{ System.out.print("Failure ...!"); } } }

Tak ada yang namanya

gagal

,

Yang ada melainkan hanya

sukses

atau belajar,

Jika

tidak sukses

, berarti kita masih harus belajar sampai

sukses

.

By : DnD

Jav

a in

ac

Tio

n

Referensi

Dokumen terkait

Alasan masuk S1 Pendidikan Bahasa Inggris FKIP-UT karena tidak perlu meninggalkan tugas/fleksibel merupakan pilihan terbanyak yang di pilih oleh responden

Penelitian ini bertujuan untuk meningkatkan kemampuan berbicara siswa melalui metode brainstorming pada mata pelajaran bahasa Indonesia di kelas VA SD Negeri 1 Sokaraja

Program efisiensi energi listrik Kecamatan Tuntang yang masuk daerah administrasi Kabupaten Semarang, mengacu pada Peraturan Daerah Kabupaten Semarang Nomor 4

Na?ean Jomhari yang telah member1 banyak tunjuk ajar dan nasi hat yang berguna untuk saya menyempurnakan Proj ek Latihan Jlmiah Tahap Akhi r ini.. Tidak lupa

Yang dijadikan parameter atau ukuran dari kemampuan jarntung-paru pada orang coba adalah konsumsi oksigen maksimal orang tersebut (VO2 max).untuk mendapatkan VO2 max ini,

Hasil evaluasi aspek teknis yang dibandingkan dengan nilai rata-rata pelaksanaan GDFP di stasiun percontohan pemeliharaan sapi perah Pondok Ranggon menunjukkan

Danny akan buktikan kepada bapak dan ibu kalau danny akan baik-baik saja dengan bermain sepak bola, Danny akan buat bapak dan ibu bahagia dan bangga kepada Danny kalau suatu saat

Proses analisis data tersebut dilakukan berdasarkan data lapangan dan sekunder yang dilakukan pada setiap satuan pemetaan, meliputi 10 parameter yaitu: kemiringan lereng,