Soru & Cevap

Asp.Net Web Service ( asmx ) ten JSON döndürmek ve Almak

18.04.2016 - 07:02

 

Merhaba,

Uygulamanın sunucu tarafını asp.net 2.0 web servisleri ( asmx ) ile yapıyorum. Bu web servis xml dönüyor.
Ben performansı arttırmak için web servis json dönsün istiyorum. Bunun için bu sayfada json nasıl döndürülür diye bir kod var. ( https://gelecegiyazanlar.turkcell.com.tr/soru/androidde-c-yazarak-webservisten-veri-cekememek#answer-id-33832

Json döndürdüğümü varsayalım. Ben normalde asmx dosyası xml döndürdüğünde ksoap2 kütüphanesini kullanarak xml i alıyordum.

Json döndürdüğünde Android tarafında nasıl bir kod yazmalıyım. Ksoap2 kullanmadan yapabilir miyim?

Örnek bir kod olursa veya dökümantasyon çok sevinirim

 

150 Görüntülenme

3 Cevap

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

Profile picture for user ahmetyusuf
ahmetyusuf
20.04.2016 - 04:08

merhaba Serdar, Volley in json verisi çekmek için hızlı bir yöntem olduğunu biliyorum ama benim sorumun cevabını henüz alamadım. Emeğin için teşekkür ederim. 


stackoverflow'da da bu sorunun çözümünü bulamadım. Bunu deneyimlemiş bir kod görebilirsem gerçekten çok mutlu olurum.

Beklemedeyim.

Serdar Şen
20.04.2016 - 06:45
bişey değiil.
Profile picture for user ahmetyusuf
ahmetyusuf
19.04.2016 - 06:04

 

 

Serdar Merhaba,

Volley asmx dosyasini cagirabilir mi? Bir ornek var mi?

 

 

 

Serdar Şen
19.04.2016 - 09:56
Yok Volley Json üzerine çalışan bir kütüphane diye biliyorum Ahmet.
Serdar Şen
19.04.2016 - 10:04
cevabımı güncelledim.
picture-57989-1451678910.jpg
serdarşen
18.04.2016 - 08:59

Merhaba Ahmet, android' te json object veya array alıp parse edebilmek için şu sayfadan itibaren anlatılan Volley sınıfını tavsiye ederim. https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-301/verileri-volley-ile-transfer-etmek

Anlamadığın noktalar olursa yazabilirsin.

Update ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

asmx ile çalışmadım ama senin elinde webservisteki xml' den  json döndüren bir Url varsa Volley onResponse metodu ile bunu alıp daha sonra parse edebilirsin. Örneğin ben vertabanından verileri bir php script ile çekip json' a dönüştürüyorum. Sonra gelen veriyi MyFactory sınıfımda parse ediyorum.

 

{
	"data": [{
		"kul_id": "1",
		"kul_adi": "Serdar",
		"kul_sifre": "12345",
		"state": "login_successful",
		"error": ""
	}]
}

 

    //kullanıcı sisteme giriş.
    public static void responseUserGiris(final Context context, String... params) {

        //gerekli değişkenler
        RequestQueue requestQueue;
        requestQueue = Volley.newRequestQueue(context);

        ////servera içerik gönderilecekse///////////////////////////////
        Map<String, String> contentParams = new HashMap<>();

        contentParams.put(Tables.oyun_kullanicilar.kul_adi, params[0]);
        contentParams.put(Tables.oyun_kullanicilar.kul_sifre, params[1]);

        JSONObject content = new JSONObject(contentParams);
        ///////////////////////////////////////////////////////////////

        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(

                Request.Method.POST,
                Url.kullanici_giris, content,

                new ResponseListener(){

                    @Override
                    public void onResponse(JSONObject response) {

                        Log.i(TAG, "onResponse");
                        MyFactory.buildUserGiris(response);

                    }

                },

                new ResponseErrorListener()

        );

        requestQueue.add(jsonObjectRequest);

    }
    //kullanıcı sisteme giriş.
    public static void buildUserGiris(JSONObject response) {
        if (response.length() > 0) {

            int count = 0;

            try {

                JSONArray dataArray = response.getJSONArray(Tables.data);

                while (count < dataArray.length()) {

                    JSONObject JO = dataArray.getJSONObject(count);

                    String state = JO.getString(Php.state);
                    String error = JO.getString(Php.error);


                    if (state.equals(Php.login_successful)) {

                        User user = MainActivity.user;
                        user.setKul_id(JO.getString(Tables.oyun_kullanicilar.kul_id));
                        user.setKul_adi(JO.getString(Tables.oyun_kullanicilar.kul_adi));
                        user.setKul_sifre(JO.getString(Tables.oyun_kullanicilar.kul_sifre));

                        Log.i(TAG, state);
                        MainActivity.preferences.kulAdiSifreKaydet(user.getKul_id(), user.getKul_adi(), user.getKul_sifre());
                        MainActivity.pm.initEntryPages();

                    }

                    if (state.equals(Php.mysqli_connect_error)) {

                        Log.i(TAG, state + ": " + error);

                    } else if (state.equals(Php.mysqli_error)) {

                        Log.i(TAG, state + ": " + error);

                    } else if (state.equals(Php.login_failed)) {

                        Log.i(TAG, state);
                        MainActivity.pm.speak("kullanıcı adı veya şifreniz hataalı.", "ID_login_failed");

                    }

                    count++;
                }


            } catch (JSONException e) {
                e.printStackTrace();
            }


        }
    }