Merhaba arkadaşlar android uygulama yapıyorum. Json ile veri çekip listeliyorum. Android 2.3 olan emülatörde sorunsuz verileri json ile çekebiliyorum. Fakat Android 4.1 yüklü emülatörde hata veriyor. Hatanın ne olduğunu yazdırıyorum "null" yazıyor. Bunun sebebi nedir bilen varsa yardımcı olabilir mi ? Şimdiden teşekkürler.

readurl fonksiyonuyla return kısmını okuttuğumda 2.3 te sorunsuz sayfadaki json verileri geliyor. Ama 4.1 de hata veriyor. Kodlarım:

private String readUrl(String urlString) throws Exception {
    BufferedReader reader = null;
    try {
        URL url = new URL(urlString);
        reader = new BufferedReader(new InputStreamReader(url.openStream()));
        StringBuffer buffer = new StringBuffer();
        int read;
        char[] chars = new char[1024];
        while ((read = reader.read(chars)) != -1)
            buffer.append(chars, 0, read); 
        return buffer.toString().split("<")[2].split(">")[1];
    } finally {
        if (reader != null)
            reader.close();
    }
}

soruldu: 22 Ağu '12, 10:13

creseos's gravatar image

creseos
2.0k468187
cevap kabul oranı: 37%

değiştirildi: 22 Ağu '12, 10:14


kodunuz çalışıyor görünüyor. acaba ayrı bir thread yada asynctask kullanmıyor olabilir misiniz? burada bir benzeri sorulmuştu. http://www.btsoru.com/questions/2235/telefondan-web-servise-nasl-baglanabilirim

bir de fırlatılan exception'u yakaladığınız yerde mi "null" yazıyor? geçici olarak catch blogu ekleyip oarada hata mesajını yazdırmayı deneyin isterseniz.

permanent link

cevaplandı: 22 Ağu '12, 10:48

baran's gravatar image

baran
2.1k81939
cevap kabul oranı: 30%

Evet evet verdiğiniz linkteki hata benimkine benziyor. Çok Teşekkürler Peki sorunumu nasıl çözebilirim ?

Bu arada

 try {
            URL url = new URL(urlString);
            reader = new BufferedReader(new InputStreamReader(url.openStream()));
            StringBuffer buffer = new StringBuffer();
            int read;
            char[] chars = new char[1024];
            while ((read = reader.read(chars)) != -1)
                buffer.append(chars, 0, read); 
            return buffer.toString().split("<")[2].split(">")[1];
        }
        catch(Exception e){toast("hata " + e.getmessage());}
     finally {
            if (reader != null)
                reader.close();
        }

bu şekilde yazdığımda da hata mesajı olarak "hata Null" yazıyor.

(22 Ağu '12, 10:52) creseos creseos's gravatar image

toast yerine Log sınıfını kullanmanızı tavsiye ederim. bende bu kodda thread ile ilgili hata veriyor eğer direk kodu çalıştırırsam. 3.0dan sonra bu tarz network işlemlerini başka bir thread açıp yapmanız gerekiyor. AsyncTask da kullanabilirsiniz. arkada thread açıp kodu çalıştıracaktır.

(22 Ağu '12, 11:01) baran baran's gravatar image

Bir deneme yaptım bütün herşeyi kapattım. OnCreate kısmına sadece

try { msgBox(readUrl("okunacakurl")); } catch (Exception e) {toast(e.getMessage()); }

yazdım. Yani başka hiçbir işlem yapmadan sadece okutma işlemini yaptım hata vermedi Fakat yine boş geliyor sanırım başka birşeyden kaynaklanıyor.

(22 Ağu '12, 11:14) creseos creseos's gravatar image

Sorun android 3.0 ve üstünde network işlemlerinin thread yani arkaplanda olmadan yapılmasına izin verilmemesi. Mutlaka network işlemlerini(webservisten veri çekmek , resim indirmek vs..) thread ile yapmamız gerekiyor. Aksi takdirde 3.0 ve üzeri android verinin gelmesine izin vermiyor ve null değer döndürüyor. Verdiğiniz linkte dediğinizi başta anlamamıştım fakat sonradan biraz da kendim araştırarak ve bişeyler katarak sorunu hallettim.

Teşekkürler.

(26 Eyl '12, 02:53) creseos creseos's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×818
×39
×3

Soruldu: 22 Ağu '12, 10:13

Görüntüleme: 1,172 kez

Son güncelleme: 26 Eyl '12, 02:53

powered by BitNami OSQA