Soru & Cevap

Androit Http Client GET işlemi

16.06.2014 - 02:57

merhaba arkadaşlar uzak sunucuy get ile veri göndermek istiyorum fakat aşağıdaki kod android 2.3te sorunsuz çalışmasına rağamnen 4.2'de hata vermekte sebebi nedir acaba?

[code]

HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.SUNUCUURL.com/server.php?deger1=deneme");
        try {

        httpclient.execute(httppost);
        } catch (IOException e) {
        }

[/code]

 

Aldığım Hata

[code]06-16 07:52:50.920: E/AndroidRuntime(2021): FATAL EXCEPTION: main
06-16 07:52:50.920: E/AndroidRuntime(2021): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.uzak/com.example.uzak.MainActivity}: android.os.NetworkOnMainThreadException
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.os.Looper.loop(Looper.java:137)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.app.ActivityThread.main(ActivityThread.java:5103)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at java.lang.reflect.Method.invokeNative(Native Method)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at java.lang.reflect.Method.invoke(Method.java:525)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at dalvik.system.NativeStart.main(Native Method)
06-16 07:52:50.920: E/AndroidRuntime(2021): Caused by: android.os.NetworkOnMainThreadException
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at com.example.uzak.MainActivity.verigonder(MainActivity.java:50)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at com.example.uzak.MainActivity.onCreate(MainActivity.java:39)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.app.Activity.performCreate(Activity.java:5133)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
06-16 07:52:50.920: E/AndroidRuntime(2021):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)

[/code]

109 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user FATIH_999
FATIH_999
16.06.2014 - 06:59

birşey daha sorayım hocam buradan uzak bir sunucuya bu şekilde veri gönderdiğimde her telefondan benzersiz ne ile kayıt edebilirim? mesela device id numarasını çekerek kaydetmek olabilirmi? bu şekilde kayıt mümkünse güvenlik açısından kullanıcılara zarar gelebilirmi?

Ahmet Burak Demirkoparan
16.06.2014 - 07:32
mevzunuzu tam anlayamadım uzak sunucuya bir kimlik ile veri mi göndereceksin.yani benzersiz bi numara ile göndermen cok mantıklı ama device id ile birden fazla gönderimlerde çakışma olmaz mı.tam olarak ne yapmak istiyorsun birazcık açarsan daha mantıklı yorumlarda bulunabilirim
Fatih
16.06.2014 - 10:14
şöyle söyleyim en basitinden şimdi mesela bir resim var ortak oylamaya sunuldu her telefon bir oy kullanması için php ile çekltiğim veride telefondan ip adresleri gibi benzersiz bir bilgi almam lazım sisteme tekrar o telefon girdiğinde oy kullanamaması için mesela imei numaralarıda benzersizdir sanırım
picture-1372-1408467635.jpg
ahmtbrk
16.06.2014 - 03:14

dostum arayüz kitleniyor thread yazman lazım veya asynctask yazıp onda yapman lazım işlemi ya da başka bi alternatif var ama arayüzü kitler data gelene kadar.

onCreate blogunun altına bunu tanımla sorunun düzelir ama çok iyi bi yöntem değil o yüzden AsyncTask kullanmayı öğren rahatça yap işlemini

[code]

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);

[/code]

Fatih
16.06.2014 - 03:21
teşekkür ederim hocam AsyncTask kullanarak arka plandamı yaptırmak lazım bu işlemi?
Gorkem Karadogan
16.06.2014 - 03:30
asynctask kullanmanız gerekıyor
Ahmet Burak Demirkoparan
16.06.2014 - 03:35
evet asynctaskta gayet basittir anlayınca 3 aşaması var temelde. onpreexecute(arka plan işlemi başlamadan önce calısır doldurulması şart değil dialog vs göstermek istersen burda show edeceksin) doInBackground var burda arka plan işlemini yapacaksın istersen değer return edebilirsin onPostExecute var buda thread işlemi bittiğinde program buraya düşer burdada dialogu kapatırsın mesela doinbackgrounddan gelen sonucu buraya düşürebilirsin.
Fatih
16.06.2014 - 03:47
teşekkür ederim cevaplarınız için :)
Fatih
16.06.2014 - 06:17
birşey daha sorayım hocam buradan uzak bir sunucuya bu şekilde veri gönderdiğimde her telefondan benzersiz ne ile kayıt edebilirim? mesela device id numarasını çekerek kaydetmek olabilirmi? bu şekilde kayıt mümkünse güvenlik açısından kullanıcılara zarar gelebilirmi?