Showing posts with label Pemrograman. Show all posts
Showing posts with label Pemrograman. Show all posts

Monday, March 9, 2015

Cara Mengakses REST (REpresentational State Transfer) / Web Service dengan VB6

Dalam kesempatan ketika melakukan pemrograman, saya harus menambahkan sebuah sistem yang berbeda dari yang biasa saya lakukan, dalam hal ini program memerlukan sistem baru agar dapat mengakses data REST/Web services. Nah, pada kesempatan ini saya akan berbagi pengalaman bagai cara mengakses layanan REST/Web dengan VB6.

Apa itu REST (REpresentational State Transfer)?

REST (REpresentational State Transfer) / Web Service VB6
REST, singkatan bahasa Inggris dari representational state transfer atau transfer keadaan representasi, adalah suatu gaya arsitektur perangkat lunak untuk untuk pendistibusian sistem hipermedia seperti WWW. Istilah ini diperkenalkan pertama kali pada tahun 2000 pada disertasi doktoral Roy Fielding, salah seorang penulis utama spesifikasi HTTP. Istilah ini selanjutnya dipergunakan secara luas pada komunitas jaringan.

REST secara spesifik merujuk pada suatu koleksi prinsip-prinsip arsitektur jaringan yang menggariskan pendefinisian dan pengalamatan sumber daya. Istilah ini sering digunakan dengan longgar untuk mendeskripsikan semua antarmuka sederhana yang menyampaikan data dalam domain spesifik melalui HTTP tanpa tambahan lapisan pesan seperti SOAP atau pelacakan sesi menggunakan cookie HTTP. Dua pengertian ini dapat menimbulkan konflik dan juga tumpang tindih. Dimungkinkan untuk merancang suatu sistem perangkat lunak besar sesuai dengan gaya arsitektur REST Fielding tanpa menggunakan HTTP dan tanpa berinteraksi dengan WWW. Juga dimungkinkan untuk merancang antarmuka XML+HTTP sederhana yang tidak mengikuti prinsip-prinsip REST, tapi sebaliknya mengikuti model dari RPC (remote procedure call). Perbedaan penggunaan istilah REST ini cukup menyebabkan permasalahan dalam diskusi-diskusi teknis.

Sistem yang mengikuti prinsip REST Fielding sering disebut sebagai "RESTful".

Sumber: http://www.wikipedia.org/

Secara umum, setiap mengakses Web Service kita harus menyertakan beberapa variabel yang diperlukan untuk memberikan informasi atau validasi proses yang dikirim pada HTTP Header, misalnya:
Accept -- data format (XML atau JSON)
X-Cons-ID -- Consumer ID
X-Timestamp -- TimeStamp
X-Signature -- Pola yang digunakan ditentukan oleh REST/Web services atau variabel lain sesuai dengan aturan yang diberikan oleh Web Service ketika diakses.

Sebelum lebih lanjut untuk mengakses Web Service, pertama-pertama saya akan mencoba dengan menggunakan Tools (Add-ons). Add-on ini adalah software tambahan atau ekstensi Advanced Rest Client dari browser Chrome, yang dapat anda download di Chrome Web Store. Contoh percobaan yang saya menggunakan dapat anda lihat seperti gambar dibawah ini:
REST (REpresentational State Transfer) / Web Service VB6

VB6 referensi yang diperlukan

Referensi dalam VB6 yang diperlukan dalam mengakses REST/Web services ada dua yaitu Microsoft WinHTTP Services dan Microsoft XML. Oleh karena itu, pertama yang kita lakukan adalah mengambil Reference komponen tersebut seperti contoh dalam di bawah ini:
REST (REpresentational State Transfer) / Web Service VB6
Jangan lupa, anda juga harus memperhatikan dan mempersiapkan variabel yang dibutuhkan oleh REST/Web services selain Accept, X-Cons-ID, Timestamp dan X-Signature yaitu URI (Uniform Resource Identifiers). URI adalah alamat Web Service yang telah ditentukan.

GET, PUT, POST, DELETE dalam REST/Web Service

Proses utama yang dapat dilakukan pada akses REST/Web services ada 4 (empat) yaitu:
GET: mengambil data dari REST/Web services
PUT: menambahkan data ke REST/Web services
POST: merubah/edit data ke REST/Web services
DELETE: menghapus data di REST/Web services

Berikut contoh Program (Source Code) untuk mengakses REST/Web services

Buat 4 (empat) fungsi Get, Put, Post dan Delete ke dalam Class atau Module seperti berikut ini:
Public Function GetResponse(URI As String) As Boolean
    Dim oHTTRequest As New WinHttp.WinHttpRequest
    Dim oResult As String
    On Error GoTo ErrRequest
    oHTTRequest.Option(WinHttpRequestOption_EnableHttp1_1) = False
    oHTTRequest.Open "GET", URI, False
    oHTTRequest.SetRequestHeader "X-Cons-ID", "XXXXXX (your cons-id)"
    oHTTRequest.SetRequestHeader "X-Timestamp", "XXXXX (timestamp)"
    oHTTRequest.SetRequestHeader "X-Signature", "XXXXX (your signature)"
    oHTTRequest.Send
    If oHTTRequest.Status = 200 Then
        GetResponse = True
        oResult = oHTTRequest.ResponseText
    Else
        GetResponse = False
        oResult = oHTTRequest.ResponseText
    End If
    Set oHTTRequest = Nothing
    Exit Function
ErrRequest:
    Set oHTTRequest = Nothing
    GetResponse = False
    Err.Raise Err.Number, ", Err.Description"
End Function
Public Function PutResponse(URI As String) As Boolean
    Dim oHTTRequest As MSXML2.XMLHTTP30
    Dim oResult As String
 
    On Error GoTo ErrRequest
     
    Set oHTTRequest = New MSXML2.XMLHTTP30
    oHTTRequest.Open "PUT", URI, False
    oHTTRequest.SetRequestHeader "X-Cons-ID", "XXXXXX (your cons-id)"
    oHTTRequest.SetRequestHeader "X-Timestamp", "XXXXX (timestamp)"
    oHTTRequest.SetRequestHeader "X-Signature", "XXXXX (your signature)"
    oHTTRequest.SetRequestHeader "Content-Type", "text/xml"
    oHTTRequest.Send "XML Data Put?"
    oResult = oHTTRequest.ResponseText
    If oHTTRequest.Status = 201 Or oHTTRequest.Status = 200 Then
        PostResponse = True
    Else
        PostResponse = False
    End If
    Set oHTTRequest = Nothing
    Exit Function
ErrRequest:
    PostResponse = False
    Err.Raise Err.Number, ", Err.Description"
End Function
Public Function PostResponse(URI As String) As Boolean
    Dim oHTTRequest As MSXML2.XMLHTTP30
    Dim oResult As String
 
    On Error GoTo ErrRequest
     
    Set oHTTRequest = New MSXML2.XMLHTTP30
    oHTTRequest.Open "POST", URI, False
    oHTTRequest.SetRequestHeader "X-Cons-ID", "XXXXXX (your cons-id)"
    oHTTRequest.SetRequestHeader "X-Timestamp", "XXXXX (timestamp)"
    oHTTRequest.SetRequestHeader "X-Signature", "XXXXX (your signature)"
    oHTTRequest.SetRequestHeader "Content-Type", "text/xml"
    oHTTRequest.Send "XML Data Post?"
    oResult = oHTTRequest.ResponseText
    If oHTTRequest.Status = 201 Or oHTTRequest.Status = 200 Then
        PostResponse = True
    Else
        PostResponse = False
    End If
    Set oHTTRequest = Nothing
    Exit Function
ErrRequest:
    PostResponse = False
    Err.Raise Err.Number, ", Err.Description"
End Function
Public Function DeleteResponse(URI_Response As String) As Boolean
    Dim oHTTRequest As MSXML2.XMLHTTP30
    Dim oResult As String
    On Error GoTo ErrRequest
     
    Set oHTTRequest = New MSXML2.XMLHTTP30
    oHTTRequest.Open "DELETE", URI, False
    oHTTRequest.SetRequestHeader "X-Cons-ID", Fields.xConsID
    oHTTRequest.SetRequestHeader "X-Timestamp", Fields.xTimeStamp
    oHTTRequest.SetRequestHeader "X-Signature", Fields.xSignature
    oHTTRequest.SetRequestHeader "Content-Type", "text/xml"
    oHTTRequest.Send "XML Data Delete?"
    oResult = oHTTRequest.ResponseText
    If oHTTRequest.Status = 201 Or oHTTRequest.Status = 200 Then
        DeleteResponse = True
    Else
        DeleteResponse = False
    End If
    Set oHTTRequest = Nothing
    Exit Function
ErrRequest:
    DeleteResponse = False
    Err.Raise Err.Number, ", Err.Description"
End Function
Setelah anda buat fungsi (function) dalam Class atau modul diatas, selanjutnya anda tinggal menggunakan keempat fungsi tersebut dalam proyek VB6 dan memasukkan parameter-parameter yang dibutuhkan, serta menangkap nilai balik dari fungsi tersebut.

Artikel ini adalah contoh dari pengalaman saya dalam membuat program aplikasi yang REST/Web Service dengan VB6; Jika Anda mengalami kesulitan saat membuat parameter "X-Timestamp" atau "X-Signature", Anda dapat menghubungi saya melalui komentar pada artikel ini atau dengan email, mudah-mudahan saya dapat membantu anda; Saya berharap anda bisa mengembangkan lebih lanjut contoh sedikit program dari pengalaman saya ini, dan semoga artikel ini dapat berguna sesuai dengan tujuan anda.

Sunday, March 8, 2015

Data Input Grid Control untuk VB6 (Free Download)

Salah satu fasilitas dalam pembuatan program aplikasi, terutama program dengan VB6 adalah aplikasi yang menggunakan data grid pada form input yang dibutuhkan. Misalnya dalam modul transaksi yang mana kita diminta untuk mengisi lebih dari 1 item dalam 1 nomor transaksi tertentu seperti contoh yang terlihat pada gambar di bawah ini:
Data Input Grid Control untuk VB6 (Free Download)

Hal ini kadang-kadang membuat programmer newbie merasa betapa bagaimana sulitnya untuk dapat mengakomodasi aplikasi menggunakan data masukan grid sesuai yang diinginkan.

Ada banyak cara untuk menerapkan model input data grid dengan berbagai komponen ActiveX (OCX), misalnya menggunakan kontrol ListView yang dikombinasikan dengan TextBox atau menggunakan FlexGrid bergabung dengan TextBox dan ada banyak cara lain sesuai dengan keinginan kita. Tapi kendala dalam melakukan edit terhadap kontrol ini sangat sulit, terutama jika akan digunakan dalam beberapa bentuk transaksi yang berbeda-beda. Oleh karena itu, cara yang paling baik jika kita membuat ActiveX Control (OCX) dengan desain tang umum serta parameter yang bisa diubah sesuai dengan kebutuhan aplikasi transaksi.

Dalam pengalaman saya ketika mengembangkan program aplikasi dengan jumlah modul transaksi yang banyak, mengharuskan saya untuk dapat memaksimalkan kebutuhan tersebut, sehingga saya harus membuat kontrol ActiveX Data Input Grid untuk  bisa digunakan secara independen, fleksibel dan mudah diterapkan program aplikasi, sehingga kecepatan dalam menyelesaikan proyek dapat dimaksimalkan.

Oleh karena itu, saya akan memberikan gratis komponen ActiveX Control (OCX) untuk para programer yang membutuhkannya. Jika Anda tertarik silahkan download komponen di sini, berikut juga saya sertakan contoh sederhana bagaimana cara menggunakanmya dalam VB6.

Pada prinsipnya untuk menggunakan komponen tersebut adalah sebagai berikut:
  1. Setelah anda men-download komponen tersebut (DataBrowse.ocx), lakukan register komponen dengan menggunakan perintah RegSvr32....
  2. Kemudian buat sebuah proyek baru yang menggunakan VB6 (Standard Exe), kemudian tambahkan DataBrowse komponen ke dalam proyek dengan memilih menu "Project - Components" atau menekan kunci Ctrl + T. Pilih komponen "Sena Software Data Table Browse Component".
    Data Input Grid Control untuk VB6 (Free Download)
  3. Drag komponen DataBrowse ke dalam form, dan kemudian lakukan pengaturan sesuai dengan kebutuhan anda. Untuk lebih detail anda bisa lihat dari contoh yang saya sertakan dalam file download.
Ini adalah salah satu hasil karya dan pengalaman saya dalam pemrograman VB6, terutama kebutuhan akan model input grid data dan saya harap artikel ini dapat membantu Anda. Jika Anda memiliki pertanyaan tentang hal tersebut diatas, anda bisa memberi komentar pada artikel ini atau bisa menghubungi saya lewat email.

Untuk panduan cara penggunaan secara visual dapat anda lihat di Channel Berbagi Ilmu Praktis.