Yuk Kenalan dan Pahami HTTP Client di VB.Net
Pada kesempatan kali ini gua akan share seputar VB.Net lagi. ada pun topiknya kali ini adalah HttpClient sobs. dan alasan gua kenapa share karena ini yang gua pakai pada saat membuat aplikasi desktop dengan VB.Net. dimana skenarionya gua tidak menggunakan mysql client di dalam aplikasi desktop gua sobs, kenapa ? karena didalam sistem biasanya gua kerjakan menggunakan mekanisme API sobs, karena biasanya sistem yang gua kerjakaan akan terintegrasi antara Desktop App dan Mobile App.
Oke langsung aja kita gas ya sobs keburu kopi dingin dan mood untuk menulis juga meluntur. pertamax-tamax kita kenalan dengan http client di vb.net, disini gua akan jelaskan menurut bahasa gua jadi ya mohon maaf dan harap maklum sobs.
1. Pengertian HttpClient dan Fiturnya di VB.Net
1.1 Pengertian HttpClient
1.2 Fitur HttpClient
- Mengambil data dari server (Misalnya API)
- Mengirimkan data ke server (Misalnya pengisian form)
- Mendukung berbagai macam metode request (GET, POST, PUT, DELETE)
- Mendukung proses Asynchronous dan Synchronous.
2. Fungsi atau kegunaan HttpClient
- Mengambil data dari API : Misalkan sobs-sobs ingin melihat daftar produk dari sebuah toko online didalam aplikasi mobile, maka dibalik layar didalam aplikasi mobile tersebut melakukan request dengan http client ke API.
- Mengirim data ke Server : Misalkan sobs-sobs ingin mengisi ulasan dari sebuah produk toko online, maka data-data yang sobs-sobs isi akan di kirimkan ke server.
- Mengautentifikasi pengguna : yaitu seperti fitur login dengan menggunakan token API, contoh login didalam aplikasi mobile sobs
3. Skema Http Client di VB.Net
4. Contoh Penggunaan Http Client di VB.Net
4.1 Get (Ambil Data)
1. Asynchronous (Async Await)
Contoh yang pertama adalah proses Async, untuk contoh kode seperti dibawah ini sobs :
Imports System.Net.Http Imports System.Threading.Tasks Module Program Async Function getDataAsync() as Task Try 'Buat Objek dari class HttpClient Dim client as new HttpClient() Dim url as String = "https://reqres.in/api/users/2" 'Buat variabel untuk http response Dim response as HttpResponseMessage = Await client.getAsync(url) 'Cek jika request berhasil atau tidak If response.IsSuccessStatusCode Then 'Buat variabel hasil request HttpResponse, variabel berupa string Dim result as String = Await response.Content.ReadAsStringAsync() Console.WriteLine(result) Else Console.WriteLine("Request gagal sobs : " & response.StatusCode.ToString()) End If Catch ex As Exception Console.WriteLine(ex.Message) End Try End Function Sub Main(args As String()) getDataAsync().Wait() Console.WriteLine("Program dijalankan ....") End Sub End Module
Jika dieksekusi tampilanya seperti ini sobs :
Oh Iya disini gua anggap sobs-sobs sudah bisa membedakan proses Asynchronous dan Synchronous ya.
2. Synchronous (Langsung menunggu hasilnya)
Berikut ini adalah contoh dari proses sync (tidak direkomendasikan jika sobs-sobs membangun aplikasi berbasis UI, karena dapat menghambat proses render UI nya sobs), ya ini buat pengetahuan aja ya sobs
Imports System.Net.Http Imports System.Threading.Tasks Module Program Sub Main(args As String()) Try Dim client As New HttpClient Dim url As String = "https://reqres.in/api/users?page=2" Dim response As HttpResponseMessage = client.GetAsync(url).Result If response.IsSuccessStatusCode Then Dim result As String = response.Content.ReadAsStringAsync().Result Console.WriteLine(result) Else Console.WriteLine("Request Failed : " & response.StatusCode.ToString()) End If Catch ex As Exception Console.WriteLine("Error : " & ex.Message) End Try Console.WriteLine("Program dijalankan sync ....") End Sub End Module
oke sekarang kita beranjak ke contoh selanjutnya.
4.2 Post (Kirim Data)
1. Post Request (JSON)
Contoh pertama adalah request berupa json sobs. dimana skemanya ada login jadi input nya yaitu email dan password sobs.
Imports System.Net.Http Imports System.Threading.Tasks Imports System.Text Module Program Async Function postDataAsync() As Task Try Dim client As New HttpClient() 'url contoh untuk login Dim url = "https://reqres.in/api/login" 'json data Dim email As String = "eve.holt@reqres.in" Dim password As String = "cityslicka" Dim jsonData As String = $"{{""email"": ""{email}"", ""password"": ""{password}""}}" Dim content As New StringContent(jsonData, Encoding.UTF8, "application/json") Dim response As HttpResponseMessage = Await client.PostAsync(url, content) If response.IsSuccessStatusCode Then Dim result As String = Await response.Content.ReadAsStringAsync() Console.WriteLine(result) Else Console.WriteLine("Request failed : " & response.StatusCode.ToString()) End If Catch ex As Exception Console.WriteLine("Error : " & ex.Message) End Try End Function Sub Main(args As String()) postDataAsync.Wait() Console.WriteLine("Program berjalan ...") End Sub End Module
dan jika dieksekusi maka hasilnya seperti dibawah ini sobs :
Jadi jika berhasil login dan parameter email dan passwordnya maka kita akan mendapatkan tokennya sobs seperti diatas. silahkan sobs-sobs buat jika salah dengan mengganti email atau passwordnya.
2. Post Request (Form url encode)
Contoh kedua kali ini akan coba dengan mengirimkan request berupa form url encode. berikut ini sobs contohnya :
Imports System.Net.Http Imports System.Threading.Tasks Imports System.Text Module Program Async Function postDataAsync() As Task Try Dim client As New HttpClient() 'url contoh untuk login Dim url = "https://reqres.in/api/login" Dim formData As New Dictionary(Of String, String) From {{"email", "eve.holt@reqres.in"}, {"password", "cityslicka"}} Dim content As New FormUrlEncodedContent(formData) Dim response As HttpResponseMessage = Await client.PostAsync(url, content) If response.IsSuccessStatusCode Then Dim result As String = Await response.Content.ReadAsStringAsync() Console.WriteLine(result) Else Console.WriteLine("Request Failed : " & response.StatusCode.ToString()) End If Catch ex As Exception Console.WriteLine("Error : " & ex.Message) End Try End Function Sub Main(args As String()) postDataAsync.Wait() Console.WriteLine("Program berjalan ...") End Sub End Module
Contoh diatas masih sama dalam skenario login sobs, dimana kali ini data yang dikirimkan bukan berupa json melainkan form url encode. sekarang kita ke contoh lainnya post lainnya sobs.
3. Post Request (Upload file)
Sekarang gua akan berikan contoh upload file sobs-sobs. adapun kode seperti dibawah ini :
Imports System.Net.Http Imports System.Threading.Tasks Imports System.Text Imports System.IO Module Program Async Function uploadFileAsync() As Task Try Dim client As New HttpClient() 'url contoh untuk mencoba upload file Dim url = "https://api.escuelajs.co/api/v1/files/upload" 'Sobs harus menulis full pathnya seperti C:\nama-folder\nama-file Dim filePath = "C:\Users\ELITEBOOK\Desktop\vb_console\MyVbApp\test.png" Dim content As New MultipartFormDataContent() Dim fileBytes As Byte() = File.ReadAllBytes(filePath) Dim fileContent As New ByteArrayContent(fileBytes) fileContent.Headers.ContentType = New System.Net.Http.Headers.MediaTypeHeaderValue("image/png") content.Add(fileContent, "file", Path.GetFileName(filePath)) Dim response As HttpResponseMessage = Await client.PostAsync(url, content) If response.IsSuccessStatusCode Then Dim result = Await response.Content.ReadAsStringAsync() Console.WriteLine(result) Else Console.WriteLine("Request failed : " & response.StatusCode.ToString()) End If Catch ex As Exception Console.WriteLine("Error : " & ex.Message) End Try End Function Sub Main(args As String()) uploadFileAsync.Wait() Console.WriteLine("Program berjalan ...") End Sub End Module
Jika berhasil maka tampilannya seperti dibawah ini sobs :
Untuk memastikannya sobs-sobs bisa copy url locationnya dan lihat apakah file yang diupload benar adanya, disini gua juga sudah memastika dan ternyata file yang gua upload benar adanya.
4.3 DELETE, PUT
1. PUT
Untuk put seperti dibawah ini :
Dim response As HttpResponseMessage = Await client.PutAsync(url, content)
menggunakan metode PutAsync
2. DELETE
dan untuk delete seperti dibawah ini sobs :
Dim response As HttpResponseMessage = Await client.DeleteAsync(url)
Hanya saja untuk metode delete kita hanya memasukan satu parameter saja sobs yaitu urlnya saja.
4.4 Menambahkan Header Authentifikasi
Imports System.Net.Http
Imports System.Threading.Tasks
Imports System.Text
Imports System.IO
Module Program
Sub Main(args As String())
Dim client As New HttpClient()
Dim url As String = "https://api.contoh.com/data"
' Menambahkan header Authorization (Bearer Token)
client.DefaultRequestHeaders.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "access_token_sobs_sobs")
Dim response As HttpResponseMessage = client.GetAsync(url).Result
If response.IsSuccessStatusCode Then
Dim result As String = response.Content.ReadAsStringAsync().Result
Console.WriteLine(result)
Else
Console.WriteLine("Request failed: " & response.StatusCode.ToString())
End If
Console.WriteLine("Program berjalan ...")
End Sub
End Module
untuk contoh penggunaan dari HttpClient sudah sobs karena kopi mau habis. hehe selanjutnya kita masuk ke kesimpulan5. Kesimpulan
1. HttpClient digunakan untuk melakukan request HTTP, jenis HTTP Requestnya bisa berupa (GET, POST, PUT, DELETE)
2. Bisa digunakan untuk mengirim teks, Json atau pun File sobs.
3. HttpClient ini mendukung proses secara async dan sync.
4. Http Client ini bisa dikombinasikan dengan Header, Parameter, Timeout dan juga Proxy sobs-sobs.
Posting Komentar untuk "Yuk Kenalan dan Pahami HTTP Client di VB.Net"
Posting Komentar