Android ve Php ile Basit Client-Server Uygulaması
Android uygulama geliştirirken, çoğu zaman veritabanına ihtiyaç duymuşuzdur. Basit uygulamalarda veritabanı ihtiyacımızı ya dosyalar ile yada local veritabanlarıyla halledebiliriz. Ancak büyük projelerde ve ortak veritabanına ihtiyaç duyan uygulamalarda local veritabanları ihtiyaçlarımızı karşılamamaktadır.
Büyük projelerde genelde bu problemlere karşı web servisler kullanılır. Bu servisler sayesinde server ve client arasında XML-RPC (is a remote procedure call (RPC) protocol which uses XML to encode its calls and HTTP as a transport mechanism ) çağrıları olur. Bizim anlatacağımız konuda server, uzak sunucuda bulunan php dosyamız, client ise android uygulamamız olacak.
Çalışma mantığımız, server tarafında HTTP POST ile gelen komutları kabul eden ve geriye veri stringi döndüren bir script yazmak. Bu sayede client yani android uygulamamız web sayfalarında olduğu gibi servere çağrıda bulunabilir ve ona veri gönderebilir.
Bizim yapacağımız uygulamada veriler HTTP üzerinden gönderileceği için tam bir güvenlik sağlamak mümkün değildir. Eğer önemli ve gizli bilgi gönderiyorsanız HTTPS kullanmalısınız.
Uygulamamıza başlamadan önce şu konularda bilgi sahibi olduğunuzu varsayıyorum: Java, Android SDK, Php, running php on web server
Uygulama:
Uygulamamız serverdan aldığı bazı otomobil modellerini ekranda listeleyecek ve biz herhangi bir model tıkladığımızda bu modelin hangi markaya ait olduğunu serverdan alarak Toast üzerinde gösterecek.
Uygulamamızın ekran görüntüsü:
Server – PHP Script
Öncelik php ile server ımızı hazırlayalım. Hazırladığımız script iki tane komuta göre çalışacak. getModelList, getBrandName
getModelList, Herhangi bir parametre almayacak ve virgul ile ayrılmış modellerin listesini döndürecek.
getBrandName, Hangi modelin markası isteniyorsa o model parametre olarak yollanacak ve marka değeri döndürülecek.
Şu şekilde server.php dosyamızı hazırlıyoruz.
Örnek olarak bu scriptimizi http://kodmerkezi.net/server.php?command=getModelList ile deneyebilirsiniz.
Client – Android Uygulamamız
Uygulamamız iki class dan oluşacak.
Class: ServerInterface: Bu sınıfımız server ile iletişimi sağlayacak olan sınıfımızdır. İçinde static metodlar bulunmaktadır. executeHttpRequest metodumuz en çok işi yapan metoddur. İki tanede isteiğimi oluşturacak stringleri hazırlayan getBrandName ve getModelList metodlarımız bulunmaktadır.
Class: AndroidListClient: Programımızın başlangıç noktasını oluşturmaktadır. Öncelikle boş bir listview ile programımızı başlatıyoruz. Arkaplanda çalışan thread gerekli listeyi serverdan çekiyor. Daha sonra veriler gelince listemiz yenileniyor ve bilgiler listeye dolduruluyor. Ayrıca herhangi bir liste elemanın tıklandığını anlamak için clicklistener oluşturuyoruz.. Böylece kullanıcı bir model tıkladığında biz arka planda çalışan thread sayesinde ilgili markayı serverdan çekiğ Toast ile ekrana basacağız.
Bu işlemleri yaparken eş zamanlı olmayan (asynchronous) metodlar kullandık. Çünkü arka planda server ile iletişimin ne kadar süreceğini bilmiyor olmamız. Bunları öğrendikten sonra php ile database bağlantısı yapıp cihazınıza database den gelen verileri yollayabilir ve cihazdan aldığınız verileri database e kaydedebilirsiniz.
Son olarak androidmanifest.xml dosyasında internet erişimine izin verdiğinizden emin olun
Kodu ve Php Scripti buradan indirebilirsiniz.
Yardımcı Kaynak: http://www.hassanpur.com
Bunlara da Göz Atmak İsteyebilirsiniz.
<<< Önceki: E ‘ NFA to DFA Converter (E ‘ Nfa dan Dfa ya Çeviri Yapan Java Otomata)
Sonraki: Regular Expression to DFA Converter (Düzenli İfadeden Dfa ya Çeviri Yapan Java Otomata) >>>
Merhabalar, yazınızı çok yararlı buldum öncelikle paylaşımınız için teşekkür ederim. Yeni yeni android ile uğraşıyorum Bir şey sormak istiyorum ben kodu indirdim ancak açamadım nasıl açabileceğimi tarif edebilir misiniz?
Esma,
İndirdiğin dosyayı çıkardıktan sonra içinde server.php ve android klasörü olacak. server.php yi çalıştırmak istediğin web alanına atacaksın. Android dosyasını ise Eclipse import edeceksin. Gerekli programların tam ise(android sdk, java sdk…) programın çalışacaktır.
peki tekrar deneyeceğim, çok teşekkürler..
bu sefer oldu teşekkür ederim, şuan çalıştırdığımda projeyi sizin sitenizden araba bilgilerini alarak çalıştırıyor. benim buna benzer proje yapmam gerekiyor da o zaman öncelikle bir site mi yapmalıyım sunucu görevi görsün diye orasını anlayamadım :/
Site değil sadece server tarafında yapılacak işlemleri (databaseden veri çekme vs) halledecek olan dosyayı (ben server.php yazdım) yazman gerekiyor. Herhangi bir sitenin altına attığında benimkine nasıl uzaktan erişiyorsan, kendi yazdığın server dosyasına da o şekilde erişeceksin. Böyle bir siten yoksa kendi bilgisayarına server (wapmserver örneğin) kurarak (sadece senin bilgisayarda çalışmak kaydıyla) çalıştırabilirsin.
http://i.imgur.com/uOSc9.png
şeklinde sıkıntı yaşıyorum. listview oluşturdum ama bu sorun neden kaynaklanıyor çözüm bulamadım…
Merhaba Selim,
Resimden sorunu anlayamadım. Herhangi bir hata ikonu da yok. Nerede sorun yaşıyorsun.
Merhaba ,Esra nın sorusuna cevap verirken yazmışsınız wampserverla yapılabileceğini, bu wampserver da bizim veritabanımız mi olacak server.php ile siteden veri cekmek yerine wampserverdan mı veri çekicek?bu wampserver la nasıl yapılacağı konusunu biraz daha anlatır mısınız?
Merhaba Ceren,
Uygulamayı geliştirirken, geçici olarak kendi bilgisayarını server olarak kullanabilirsin. Bunun için wampserver kullanabilirsin. Wampserver ile localhostta çalışabilirsin. Ancak yazdığın uygulama sadece kendi bilgisayarında çalışır.
Sanırım android üzerine en faydalı bilgiler bu sitede yer alıyor.
Merhabalar,
Bu yazınızda server.php i web alanına atacaksınız demişsin, tam olarak nasıl yapıyoruz bunu açıklayabilir misiniz? uygulamayı çalıştırma adımlarını söylerseniz sevinirim. Teşekkürler.
Konuda bahsettiğimiz php dosyasını, bir hosting’e atacaksınız. Mesela http://www.ferhat.com şeklinde bir siteniz var. Bu sitenizin dosyalarının olduğu bölüme server.php dosyasını da koyarsanız. Artık sizin server kısmınız http://www.ferhat.com/server.php olur ve uygulamaya bu domaini verirsiniz. Mesela biz http://www.kodmerkezi.net altına bu dosyayı koyduk ve şu şekilde erişebilirsiniz. http://www.kodmerkezi.net/server.php ancak boş bir sayfa çıkacak karşınıza eğer şu url i yazarsanız modeller gelecektir. http://www.kodmerkezi.net/server.php?command=getModelList Eğer sadece denemek istiyorum diyorsanız, kendi bilgisayarınızda bir wampserver kurup, buraya server.php dosyasını atarsanız. Şu şekilde erişebilirsiniz http://localhost/server.php
Merhaba öncelikle teşekkürler anlatım için.
WampServer da çalışıyorum , server.php dosyasını server ıma attım ancak browser da açmaya çalıştığım zaman;
“Undefined index: command in C:\wamp\www\clientServer\server.php on line 3”
gibi bir hata alıyorum ve marka listesini alamaıyorum, Emulator dede aynı şekilde proje çalışıyo ancak ListView a veriler gelmiyor, nedeni hakkında bir fikriniz var mı? Teşekkürler, İyi Çalışmalar.
Arkadaşlar böle text leri alabiliyoruzda resimleri de alabilir miyiz?
Tabiki alabilirsiniz, ancak yöntemi değiştirmeniz gerekmektedir. Sonuçta burada bilgiler url üzerinden string şeklinde gitmektedir.
Hocam merhaba ben kayit sayfası yapmaya çalışıyorum fakat php sunucuma dizi şeklinde nasıl göndereceğimi yada php tarafından bunu nasıl alacağımı yapamadım yardımcı olabilirmisiniz?TEŞEKKÜRLER
Farklı farklı bilgileri ayrı değişkenlerde göndermelisiniz, eğer bir değişken dizi içeriyorsa, dizi elemanlarını belirli bir ayıracla birleştirip tek string olarak gönderebilirsiniz, server tarafında tekrar ayırma işlemi yaparsınız.
S.a size bi sorum olacak javada değilde php de yapilmis programi yani bn php uye kaydı felan yapsam ve bu uygulamayı android e nasil ceviricem proje tamamen php olacak ama android telefonlara nasil cevirebilirim
Web sitesi için hazırladığınız php ile android uygulaması için hazırladığınız php ler farklı olacak, birisi web sitesi üzerinden kullanıcıya hitap eden bir sayfa olurken, diğeri android uygulaması ile iletişime geçen bir katman olacak. Bu yüzden client için ayrı php ler yazmanız gerekmektedir.
Bunda buton var diyelim veri tabanına da kayıt ekleyecez. Nasıl yapabiliriz?
Nasıl client dan php dosyasına seçilen modeli yollayabiliyorsak, aynı yöntemi veri yollamak için kullanabilirsiniz, daha sonra php ile aldığınız veriyi db ye yazabilirsiniz.
iyi günler hocam bir sorum olacaktı şimdi bi web sitemiz var buna uygun olacak sekilde bir uygulama geliştiriyoruz androidde. bunlar için ortak bir sunucu nasıl kullancagız yardımcı olursanız sevinirim
Basit bir uygulama yapıyorsanız, web sitenizi sunucu gibi de kullanabilirsiniz. Örnekte anlatılan şekilde, client ile iletişime geçecek php sayfaları hazırlayabilirsiniz, böylece websitenizin veritabanını kullanarak uygulamayı da çalıştırabilirsiniz.
Merhabalar birşey sormak isteiyorum. bu vt deki verileri telefonda gösteriyor. peki bunun tam tersini yapabilirmiyiz? telefondaki bilgileri bir php de listeleyebilirmiyiz? örneğin çağrı kayıtlarını nasıl bir php üzerinde çıkarabiliriz?
Yapabilirsiniz, en kolay yolu, telefondan server üzerinde bilgileri gönderim db ye yazmak. Ardında php ile istediğiniz gibi gösterebilirsiniz.
Merhabalar öncelikle bu parse işleminde en temiz anlatım bu olmuş sanırım teşekküler. Ben uyglamayı çalıştırdığımda listview de hiç bir şey görüntülenmiyor acaba nedendir ?
Merhaba hocam ben ToDoList programının daha basit halini yapacam. Bunu Netbeans ya da Eclipse de yapmam gerekiyor. Bunu Birçok kişi kullanabilir olması lazım. Şöyle anlatayım: Karşılıklı olacak. Ortak bir havuzda olur. Comment mantığı vardır, ya da thread de denir, yani eklenen maddeler vardır; ekleyeni, saati ve sırası bellidir, diğer kişi buna alt kırılım olarak cevap verir, bir diğeri de bu kırılımın da altında bir kırılım olarak cevap verir. Bir noktada karşılıklı olarak madde kapanır. Böyle bir proje yapmam lazım bunu nasıl yapabilirim yardımcı olursanız çok memnun olurum.
Yorum Bırakın!
En Son Yazılanlar
Codeigniter Dersleri
Kategoriler
Teknoloji Haberleri
Android Dersleri
Arşiv
Sitemizin QR Kodu
Yeniliklerden İlk Sizin Haberiniz Olsun
KodMerkezi.Net Facebookta
En Çok Okunanlar
En Son Aranan Kelimeler
En Çok Oy Alanlar
Etiket Bulutu
İlginizi Çekecek Siteler
Arşiv
Yönetim
En Son Yapılan Yorumlar
En Çok Okunanlar