Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

HTTP POST dengan WebClient pada Sliverlight for Windows Phone

From Wiki
Jump to: navigation, search

Artikel ini akan menjelaskan bagaimana caranya untuk melakukan koneksi HTTP POST dengan memanfaatkan WebClient pada Silverlight for Windows Phone.

WP Metro Icon Web.png
SignpostIcon XAML 40.png
SignpostIcon WP7 70px.png
Article Metadata

Contoh Kode
Diuji dengan
Perangkat: Nokia Lumia 800

Kecocokan
Platform(s):
Windows Phone 7.5

Artikel
Created: Jeffrey.Halimsetiawan (18 Sep 2012)
Perubahan Terakhir: hamishwillee (19 Jul 2013)

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:

  1. Pilih New – Project.
  2. Pilih Silverlight for Windows Phone pada Installed Templates, kemudian pilih Windows Phone Application.
    HTTPPostWebClient1.png
  3. Tambahkan sebuah ListBox yang diberi nama lbxQuery pada ContentPanel.
    HTTPPostWebClient2.png
  4. Tambahkan sebuah TextBox sebagai input kriteria pencarian dan Button pada ContentPanel.
    HTTPPostWebClient3.png
  5. Tambahkan event handler OnClick pada btnSearch ketika event Click dibangkitkan.
    HTTPPostWebClient4.png
  6. Pilih Add Reference untuk menambahkan System.Xml.Linq.dll yang berguna untuk melakukan parsing XML ke dalam project.
    HTTPPostWebClient5.png
  7. 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());
    }
  8. 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.");
    }
    }
  9. 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
Berikut adalah hasil dari aplikasi yang berjalan:
HTTPPostWebClient6.png

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!

This page was last modified on 19 July 2013, at 05:18.
231 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×