Menggunakan HttpClient android untuk mengirim method POST pada webserver

12 Oct

Mau share sedikit tutorial mengirim parameter menggunakan method POST untuk webserver apapun (PHP/ASP). Dengan mengetahui konsep pengiriman ini, maka pengembangan komunikasi antara mobile android dengan webserver untuk mengelola webservice mungkin sedikit terbantukan.

Langsung saja Create new project pada eclipse anda, kemudian isikan dengan project name dan activity name terserah andađŸ™‚. Dalam kasus ini, saya mengisikan dengan :

menggunakan SDK biasa tanpa google API yang 2.1-update1 ProjectName : HttpRequestExample2
Create Activity : HttpRequestExample2
Package Name : com.jefri.post
Min SDK : 7 (eclair)

Berikut adalah detail code yang saya buat :

/************************************************/
/* Pengiriman parameter menggunakan method Post */
/* pada webserver menggunakan android           */
/*               (c) Jefriyanto                 */
/************************************************/

package com.jefri.post;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.EditText;

public class HttpRequestExample2 extends Activity {
    //membuat base dasar oncreate
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        EditText nama = (EditText)findViewById(R.id.nama);
        nama.setText(postData());//mengambil hasil dari http ke nama di main.xml

    }
    public String postData(){
    //inisialisasi
    String returnValue="";

    try {
     //Inisialisasi HttpClient object
     HttpClient httpclient = new DefaultHttpClient();

     //membuat object HttpPost untuk URL yang menampung file data POST
     //dalam kasus ini saya memakai php (android_post.php) dengan isi :
     // <?php echo "Ini respon dari server : ".$_POST['name']; ?>
     HttpPost post = new HttpPost(new URI("http://jflinq.com/android/android_post.php"));

     //membuat header yang relevan
     post.setHeader("Content-Type","application/x-www-form-urlencoded");

     //menambahkan data POST dan assign kan pada HttpPost object
     //pada kasus ini kita boleh menggunakan HashMap (Map) atau List array, tergantung keperluan
     List nvPairs = new ArrayList(2);

     //untuk mengirim kan parameter name berisi dengan "jefriyanto"
     nvPairs.add(new BasicNameValuePair("name", "jefriyanto"));
     UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nvPairs, "UTF-8");
     post.setEntity(formEntity);

     //exekusi POST
     HttpResponse response = httpclient.execute(post);

     //generate string dari response
     HttpEntity entity = response.getEntity();
     returnValue = EntityUtils.toString(entity);

    } catch (UnsupportedEncodingException ed) {
     ed.printStackTrace();
    } catch (ClientProtocolException ef) {
     ef.printStackTrace();
    } catch (IOException eg) {
     eg.printStackTrace();
    } catch (URISyntaxException e) {
     e.printStackTrace();
    }

    //mengembalikan semua nilai html yg diresponse
    return returnValue;
   }
}

Pada main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"/>

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/nama"/>

</LinearLayout>

Tambahkan pada mainfest.xml :

<uses-permission android:name="android.permission.INTERNET" />

Jika berhasil maka muncul seperti ini :

Sisanya bisa di modifikasi menggunakan form dari main.xml atau gimana
Sekian dulu tutorialnya mudah2an bergunađŸ™‚

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: