HTTP Post ve AsyncTask Kullanımı :MobileCoder I MobileCoder.NET I Mobil Programlama I Android Programlama I Mobil Geliştiricilerin Buluşma Noktası I www.MobileCoder.Net

HTTP Post ve AsyncTask Kullanımı

02.04.2015 tarihinde Android Programlama kategorisine eklenmiş, 782 views Kişi Okumuş ve 0 Yorum Yapılmış.

Android HTTP Post ve AsyncTask Kullanımı

 resim-4 Bu makalemde, anladığım ve bildiğim kadarıyla sizlere HTTP Post ve daha sonrasında AsyncTask sınıfını anlatmaya çalışacağım. Öncelik olarak web üzerinden istekte bulunmayı, sonrasında genel itibariyle http post olayının sürecine değinmeye çalışacağım. AsyncTask ise Android üzerinde bir sınıf. Zamandan kazanmak istiyorsak, fazla koddan kurtarmak yada aşırı kodu temizlemek istiyorsak AsyncTask tam aradığımız sınıf. Detaylı olarak başlıklar altında anlatmaya çalışacağım. 

 

HTTP Post

Yaptığımız uygulamanın herhangi bir web servisine veya başka bir tarayıcı, sağlayıcıya veri gönderip veya veri alması işlemlerinde bizlere büyük faydası olan bir metod diyebiliriz. Uygulama içerisinde veri yada bilgiyi yollayacaksak, bunu “Post” metodu kullanarak yaparız. Kullanımı farklı olan diğer bir metod ise “Get”  ‘tir. Her ikisininde HTTP için yapılan istek olduğunu belirtmemiz gerekir. Fakat uygulanış kısmında farklılıklar vardır.

HTTP Post ve Get metodlarını gelin ayrı inceleyelim.

Öncelikle  Post için;

  • HttpClient bir nesne oluşturalım.

HttpClient httpClient = new DefaultHttpClient();

  • HttpPost bir nesne oluşturalım.

HttpPost httpPost = new HttpPost (www.mobilecoder.net);

  • Post parametrelerimizi ekleyelim.

List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2);

nameValuePair.add(new BasicNameValuePair(“kullanıcıadı”, “mustafa”));

nameValuePair.add(new BasicNameValuePair(“şifre”, “97531”));

 

  • Post kodlama verilerimizi (url şeklinde) çevirelim.

HttpPost isteği yapmadan önce, geçerli olacak bir url şeklinde verileri kodlamamız gerekiyor.

//Encoding POST data

try {

httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));

 

} catch (UnsupportedEncodingException e)

{

e.printStackTrace();

}

  • Yapmamız gereken son işlem ise, HttpPost isteği göndermek.

try {

HttpResponse response = httpClient.execute(httpPost);

// write response to log

Log.d(“Http Post Response:”, response.toString());

} catch (ClientProtocolException e) {

// Log exception

e.printStackTrace();

} catch (IOException e) {

// Log exception

e.printStackTrace();

}

 

Not: Bu tür isteklerde herhangi bir sorunla karşılaşırsanız, uygulama internet izni eklemeyi unutmayınız. Uygulama etiketi, bildirim dosyasına aşağıdaki satırı ekleyerek internet izini olayını halledebilirsiniz.

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

 

Daha sonra Get için;

  • HttpClient bir nesne oluşturalım.

HttpClient client = new DefaultHttpClient();

  • HttpPost bir nesne oluşturalım.

HttpGet request = new HttpGet (www.mobilecoder.net);

  • Son olarak yapacağımız işlem, Http isteğini yapmak.

HttpResponse response;

try {

response = client.execute(request);

 

Log.d(“Response of GET request”, response.toString());

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 resim-5 AsyncTask ile kesiştiği nokta ise Post veya Get metodlarında tasarruf açısından bu sınıfı kullandığımız ile ilgilidir. Birbirinden çok uzakta olan olaylar değildir, aslında.Herhangi bir Post işlemini yürütmek yada bir diğer deyiş ile başlatmak için, HttpClient ve HttpPost nesnelerini oluşturmak gerekiyor. Post edeceğimiz bilgi yada verileri hazırladıktan sonra, isteğimizi yapıyoruz. Post işlemimizin tamamlanması ise, karşı taraftan alacağımız yanıt yani HttpResponse ile gerçekleşmiş oluyor. Klasik bir “gönderici-alıcı” döngüsündeki olaylar gerçekleşiyor.

Bu yazdıklarımızı kod haliyle görüntülemeye çalışalım.

resim-1

Kod bloğunu kullanmanız için, aşağıya kullanılabilir şekilde bırakıyorum.

 

public class MainActivity extends Activity {protected void onCreate(Bundle savedInstanceState) {

super.OnCreate(savedInstanceState);

setContentView(R.layout.activity_main);

 

HttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost(“www.mobilecoder.net”);

 

List<NameValuePair> pairs = new ArrayList<NameValuePair>();

pairs.add(new NameValuePair(“sifre1”, “deger1”));

pairs.add(new NameValuePair(“sifre2”, “deger2”));

post.setEntity(New UrlEncodedFormEntity(pairs));

 

HttpResponse response = client.execute(post);

AsyncTask Kullanımı

AsyncTask’e değinmeden önce olayın köküne inecek olursak, “Asynchronous” kelimesinden çıktığını yani Türkçe anlamıyla “Asenkron” kelime anlamı olarak; eş zamanlı olmayan, başlama ve bitme anları başka olan, senkron, eş zaman karşıtı anlamlarına gelmektedir. AsyncTask’in bir sınıf olduğunu ve bizim android uygulamalarında işimizi kolaylaştırdığını belirtmem gerek.  resim-3

Gereksiz kod fazlalığını temizliyor, bize zaman kazandıracak. Farklı olarak AsyncTask ile ilgili şunlarıda söyleyebiliriz; arkaplanda belli başlı işlerle uğraşırken, ön planda kullanıcıların istediği gibi hareket etmesi için bir düzen, yapı gereklidir. AsyncTask bize bu noktada yardımcı oluyor. AsyncTask anlayacağımız üzere arkaplan’da bizim çok fazla işimize yarıyor.

Temelde 3 kısımdan oluştuğunu söylemek gerekiyor.

  • onPreExecute()
  • doInBackground()
  • onPostExecute()

Bir de doInBackground içerisinde “onProgressUpdate” yaptığımız işlem ve uygulamaları durumunu kullanıcılara göstermek için kullanırız.

Bunun dışında bir sorun veya sebepten ötürü AsyncTask sınıfımız iptal edilirse “onCancelled” metodunu tetiklememiz gerekir.

Bu fonksiyonlar hakkında, gelin biraz bilgi edinelim.

onPreExecute() = Kısaca açıklayacak olursak; uygulamalarda karşımıza çıkan, (lütfen bekleyiniz, yükleniyor, ayarlanıyor, düzenleniyor) ifadelerin ve gerekli değişikliklerin yapıldığı yer diyebiliriz.

doInBackground() = Uygulama arkaplanında yapılmasını istediğimiz neredeyse bütün işlemler bu metoda ihtiyaç duyar. Diğer bir deyim ile bu metod dahilinde gerçekleşir.

onPostExecute() = doInBackground metoduyla yapılan işlemlerden sonra sıra bu metoda gelir. Buradaki işlemler artık işin gösterimini etkiler. Herhangi bir hata söz konusu değildir. Arkaplandaki gerçekleşen bir işlemi, ön plana alıp gösterime sunabiliriz.

onProgressUpdate = doInBackground metoduyla yapmış olduğumuz işlemleri ve durumlarını kullanıcıya belirli bir arayüz dâhilinde göstermek istersek bu metodu kullanmamız gerekmektedir.

onCancelled = Daha öncede söylediğimiz üzere AsyncTask sınıfımızda bir iptal olursa, bu metod ile tetikleme işlemi yaparız.

AsyncTask ile ilgili metodlara baktığımızda önümüze çıkan sonuca göre, belirli bir yapı oluşturacaksak:

doInBackground bizim için zorunlu, ilk sırada olması gereken metodumuzdur. Yapacağımız işlem ve kullanacağımız uygulamalar dâhilinde gerekli sıralamayı yapmakta zor olmayacacaktır.

Şimdi de, AsyncTask sınıfı kullanımıyla bu konuyu da pekiştirelim.

resim-6

 

Makale de görüldüğü üzere, Android için HTTP Post olayı hâli hazırda rutin bir işlemde diyebiliriz. AsyncTask’in ise bizim için istediğimiz zaman asenkron işlemi yapması tamamen işin kolaylaşması ve arkaplanda işlerin güzel bir şekilde yürümesi için.

Ekstra olarak Ahmet Cebisli’nin blogundan almış olduğum kod ve ekran çıktısı ile de bu konuyu pekiştirebiliriz. Çok uzatmadan isterseniz kodlara bir gözatalım.

 

private class DownloadImageTask extends AsyncTask<X, Y, Z> {

@Override

protected void onPreExecute() {

//Burada işlemi yapmadan önce ilk olarak ne yaptırmak istiyorsak burada yaparız.

//Örneğin burada dialog gösterip “onPostExecute()” metodunda dismiss edebiliriz.

}

@Override

protected Z doInBackground(X… params) {

Z z;

//Burada arka planda yapılan işlemler yapılır.

//Bir nevi Thread nesnesinin run metodunda yaptığı işlemleri burada yapar geriye de

//AsyncTask kalttığımız nesnenin generic 3. aldığı nesneyi döner.

return z;

}

@Override

protected void onPostExecute(Z z) {

//Parametre olarak Z nesnesini alır

//arka planda yapılan işlemlerden dönen sonuç burada işleme girer.

//Handler nesnesinin handlemessage() metodunda yaptığımız işi burada yaparız.

}

}

 

Ekran çıktısı;

device-2011-12-20-171329

AsyncTask Örnek Ekran Çıktısı

 

Kod gayet basit bir anlatımla görüldüğü üzeredir. Açıklamalardan da anlaşılacağı gibi AsyncTask’i kullanmak uygulama için bizlere çok fazla kolaylık sağlayacaktır. Metodlarını kullandığımız zaman daha iyi anlayacağımız aşikâr.

Android için önemli olan bu konu da umarım sizlere yardımcı olabilmişimdir.

 

 

Kullandığım kaynaklar;

https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-301/asynctask

http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html

http://developer.android.com/reference/android/os/AsyncTask.html

http://www.ahmetcebisli.net/2011/12/android-asynctask-kullanimi/

http://hayageek.com/android-http-post-get/

 

Mustafa TEPE

Yazar Hakkında

Yazar : ceren kozhan

Yazar Hakkında :

Yazarın Tüm Yazıları İçin Tıklayınız

Yorumlar

Sitemizde En Çok Okunan İçerikler

ANDROİD TELEFONLARA ROOT ATMA
ANDROİD TELEFONLARA ROOT ATMARoot Ne demek ? Bir android cihazı root etmek telefonun
fragment
ANDROİD FRAGMENT YAPISI VE KULLANIMIFragmentler Activity içerisinde yer alan kullanıcı ara yüzleridir. Fragment
ANDROİD TELEFONLARDA KONFERANS GÖRÜŞME
ANDROİD TELEFONLARDA KONFERANS GÖRÜŞMEANDROİD TELEFONLARDA KONFERANS GÖRÜŞME   Konferans görüşme çok fazla bilinmeyen androidin
Asp.NET’de web servis hazırlama ve Android de kullanimi  Web Servis Nedir ? Web üzerinden HTTP protokolü ile hizmet

Sitemizde En Çok Yorumlanan İçerikler

Rating Bar Kullanımı
Rating Bar KullanımıAndroid’de yıldız şeklinde derecelendirme çubuğu olarak kullanılır. Kullanıcı sürükleme
Android Wear Emülatör Kurulumu
Android Wear Emülatör Kurulumu   Android studio da geliştireceğimiz uygulamaların kontrolunü yapmak için emülatör
Resim Galerisi Oluşturma
Resim Galerisi OluşturmaAndroid Programlama – Resim Galerisi Oluşturma Bu yazıda, bir galeri
SQLite Database Browser Kullanımı
SQLite Database Browser KullanımıSQLite Database Browser Kullanımı Merhaba arkadaşlar, Android uygulamaları geliştirirken uygulama üzerindeki

Son Yapılan Yorumlar

  • Kategoriler

  • Son Yazılar

  • Takvim

    Kasım 2017
    P S Ç P C C P
    « Kas    
     12345
    6789101112
    13141516171819
    20212223242526
    27282930  
  • Etiketler

  • Son Yorumlar

    • Arşivler

    • Meta