HTTP POST dengan WebClient pada Sliverlight for Windows Phone
Artikel ini akan menjelaskan bagaimana caranya untuk melakukan koneksi HTTP POST dengan memanfaatkan WebClient pada Silverlight for Windows Phone.
Keterangan Artikel
Contoh Kode
Diuji dengan
Kecocokan
Artikel
Contents |
Pendahuluan
Beberapa waktu yang lalu salah seorang teman saya meluncurkan sebuah API yang masih dalam tahap percobaan dari website miliknya bernama ongkir.info. Karena tertarik untuk mencobanya, saya mempelajari cara penggunaan API tersebut dan ternyata API tersebut menggunakan metode HTTP POST. Percobaan untuk memanfaatkan API tersebut pun mulai dilakukan. Kali ini, sebuah aplikasi sederhana yang menampilkan hasil query kota dengan data binding pada Silverlight for Windows Phone akan dibuat.
Prosedur
Langkah-langkah yang dilakukan antara lain:
- Pilih New – Project.
- Pilih Silverlight for Windows Phone pada Installed Templates, kemudian pilih Windows Phone Application.

- Tambahkan sebuah ListBox yang diberi nama lbxQuery pada ContentPanel.

- Tambahkan sebuah TextBox sebagai input kriteria pencarian dan Button pada ContentPanel.

- Tambahkan event handler OnClick pada btnSearch ketika event Click dibangkitkan.

- Pilih Add Reference untuk menambahkan System.Xml.Linq.dll yang berguna untuk melakukan parsing XML ke dalam project.

- Lakukan pengiriman HTTP POST dengan memanfaatkan method UploadStringAsync dari kelas WebClient pada event handler OnClick yang telah ditambahkan.
private void OnClick(object sender, RoutedEventArgs e)
{
if (txtSearch.Text.Length == 0)
return;
WebClient client = new WebClient();
//URL dari API
string url = "http://api.ongkir.info/city/list";
//POST Parameter
StringBuilder parameter = new StringBuilder();
parameter.AppendFormat("{0}={1}&", "query", HttpUtility.UrlEncode(txtSearch.Text));
parameter.AppendFormat("{0}={1}&", "type", HttpUtility.UrlEncode("origin"));
parameter.AppendFormat("{0}={1}&", "courier", HttpUtility.UrlEncode("jne"));
//API Key sengaja disamarkan
parameter.AppendFormat("{0}={1}", "API-Key", HttpUtility.UrlEncode("xxxxxxx"));
//Set header
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
client.Headers[HttpRequestHeader.ContentLength] = parameter.Length.ToString();
//menangani respon yang diberikan oleh server ketika menjalankan method UploadStringAsync()
client.UploadStringCompleted += new UploadStringCompletedEventHandler(OnUploadStringCompleted);
//melakukan UploadString dengan method POST secara asynchronous
client.UploadStringAsync(new Uri(url), "POST", parameter.ToString());
} - Tambahkan event handler OnUploadStringCompleted() yang bertugas melakukan parsing XML yang diterima ketika respon diperoleh karena proses pengunggahan dilakukan secara asynchronous.
private void OnUploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
if (e.Error != null)
return;
//mengambil respons yang diperoleh
string response = e.Result;
//melakukan parsing XML dari string
XElement xmlFeed = XElement.Parse(response);
//memperoleh kode status
var status = xmlFeed.Descendants("status").Elements("code");
if (Int32.Parse(status.First().Value) == 0)
{
//memperoleh semua item kota yang ada
var cities = xmlFeed.Descendants("cities").Elements("item");
var citiesString = from ItemFeed in cities
select ItemFeed.Value;
//melakukan data binding ke listbox
lbxQuery.ItemsSource = citiesString;
}
else
{
MessageBox.Show("Tidak ditemukan kota yang diawali dengan band.");
}
} - Jalankan aplikasi sederhana ini.
Hasil
Respon yang diterima dalam bentuk XML dari server ketika melakukan kriteria pencarian “ban” adalah sebagai berikut:
0
OK
BANDAACEH
BANDARLAMPUNG
BANDUNG
BANJARMASIN

Kesimpulan
Saat ini, penggunaan HTTP POST untuk melakukan pengiriman data ke server telah lazim digunakan. Dengan adanya artikel ini, diharapkan dapat dimanfaatkan untuk melakukan koneksi ke server lainnya.
Selamat mencoba!


(no comments yet)