Turkcell | Geleceği Yazanlar

Soru & Cevap

Mac ile JSON'dan veri çekemiyorum

17.02.2015 - 17:53

Arkadaşlar merhaba. Mac ile JSON'dan basit bir veri çekmek istiyorum ama Mac üzerinde çalışmıyor. Windows üzerinde çalışan kodlar benim bilgisayarımda çalışmıyor. İnternet izni de verdim ayrıca.

ALDIĞIM HATALAR İSE ŞÖYLE; 

java.lang.NullPointerException: lock == null

org.json.JSONException: End of input at character 0 of

MainActivity.java KLASÖRÜM İSE ŞU ŞEKİLDE;

public class MainActivity extends ActionBarActivity { 

    TextView txt;

    Button btn;

    

    String adi="";

    

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        

        btn=(Button) findViewById(R.id.button1);

        txt=(TextView) findViewById(R.id.textView1);

        

        btn.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                // TODO Auto-generated method stub

                new veriler().execute();

            }

        });

    }

 

    public class veriler extends AsyncTask<String, String, String>{

        @Override

        protected String doInBackground(String... params) {

            // TODO Auto-generated method stub

            JSonParseSinifi nesne=new JSonParseSinifi();

            JSONObject json;

            json=nesne.JSonObjeAl("http://localhost/android_connect/create_product.php");

            try {

                    adi=json.getString("success");

            } catch (JSONException e) {

                // TODO Auto-generated catch block

                Log.e("Catch bloğu", e.toString());

            }

            return null;

        }

        @Override

        protected void onPostExecute(String result) {

            // TODO Auto-generated method stub

            super.onPostExecute(result);

            txt.setText(adi);

        }

    }

Aldığım bir başka hata ise;

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.getString(java.lang.String)' on a null object reference

 

JSONPARSER sınıfım ise hazır bir sınıf zaten çalışan bir sınıf. Nerede hata olduğunu çözemedim günlerdir. Yardımcı olabilirseniz çok sevinirim teşekkür ederim. 

 

3152 Görüntülenme

1 Cevap

greenday
18.02.2015 - 15:08

JsonParse sınıfınızı aşagıdaki gibi tanımlarsanız hata almazsınız. Eğer servisten veri çekmek istiyorsanız HttpGet metodu kullanmanız gerekiyor.

[code]public class JSonParseSinifi {

    static InputStream gelenVeriler  = null;
    static JSONObject jObje = null;
    static String okunanDeger  = "";
    
    //yapıcısını tanımla
    public JSonParseSinifi() {
    }
    public JSONObject getJSONFromUrl(String url) {
        try {
        
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpGet httpPost = new HttpGet(url);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            gelenVeriler = httpEntity.getContent();            

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    gelenVeriler, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String satir = null;
            while ((satir = reader.readLine()) != null) {
                sb.append(satir + "\n");
            }
            gelenVeriler.close();
            okunanDeger = sb.toString();
        } catch (Exception e) {
            Log.e("jparse", "Buffer Hatası :  " + e.toString());
        }

        try {
            jObje = new JSONObject(okunanDeger);
        } catch (JSONException e) {
            Log.e("jparse", "Obje Parse işlemi hatası "+ e.toString());
        }

        return jObje;

    }
}[/code]

Main Activity içerisinde aşağıdaki servisi çağırmayı deneyin bide;

[code]public class MainActivity extends Activity {

    TextView txt;
    JSonParseSinifi nesne=new JSonParseSinifi();
    JSONObject json;
    String adi;
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button) findViewById(R.id.button1);
        txt=(TextView) findViewById(R.id.textView1);
        btn.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new veriler().execute();
            }
        });
    }

    public class veriler extends AsyncTask<String, String, String>{

        
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
        }

        

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            json=nesne.JSonObjeAl("http://www.doviz.gen.tr/doviz_json.asp?versio");
            try {
                    adi=json.getString("dolar");
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                Log.e("Catch bloğu", e.toString());
            }
            return null;
        }
        @Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            txt.setText(adi);
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}[/code]

Buradan kaynak dosyaları indirip import edebilirsin denedim benim mac te calışıyor:)

 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

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