Volley ile Rest Api Kullanımı ( POST, GET, PUT, DELETE )

Merhaba arkadaşlar,

Bugün dersimizde sizlere Volley kütüphanesi kullanarak PHP ile hazırlanan Rest Api leri android uygulamamızda nasıl kullanacağımıza bakacağız.  Bu dersimizde Rest Api leri oluşturma ile ilgili ayrıntılı bilgiyi bulabilirsiniz. Şimdi hazırlanan rest api leri kullanarak Volley ile Rest Api Kullanımı dersimizi incelemeye başlayalım.

  • POST methodu ile istek atarsak üye ekleme,
  • PUT methodu ile istek atarsak güncelleme,
  • GET methodu ile istek atarsak listeleme,
  • DELETE methodu ile istek atarsak silme işlemi gerçekleştirsin.

Volley kullanımı ile ilgili sitemizde bulunan bu dersi de ayrıca inceleyebilirsiniz.

Şimdi gelelim kodlarımızı oluşturmaya ; volley kütüphanesinin projeye dahil edilmesi ile ilgili diğer derslerimizde ayrıntılı bilgi vermiştik fakat tekrardan adımlara bir daha bakalım; öncelikle volley kütüphanesinin build.gradle dosyamıza ekliyoruz ve projemizi sync ediyoruz.

compile 'com.mcxiaoke.volley:library:1.0.19'

Daha sonra kendi Application sınıfımızı yaratıyoruz Volley isteklerinin kontrolünü kolaylaştırmak için:

AppController.java

package com.mobilhanem.phprestapivolleyexample;

import android.app.Application;
import android.content.Context;
import android.support.multidex.MultiDex;
import android.text.TextUtils;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

/**
 * Created by alper on 14/06/2017.
 */

public class AppController extends Application {

    public static final String TAG = AppController.class.getSimpleName();

    private RequestQueue mRequestQueue;

    private static AppController mInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;
    }

    public static synchronized AppController getInstance() {
        return mInstance;
    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        }

        return mRequestQueue;
    }

    public <T> void addToRequestQueue(Request<T> req, String tag) {
        req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
        getRequestQueue().add(req);
    }

    public <T> void addToRequestQueue(Request<T> req) {
        req.setTag(TAG);
        getRequestQueue().add(req);
    }

    public void cancelPendingRequests(Object tag) {
        if (mRequestQueue != null) {
            mRequestQueue.cancelAll(tag);
        }
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);

    }
}

Şimdi ilk kullanıcı eklemek için kullanacağımız POST isteğini oluşturalım ; aşağıdaki kaynak kodları incelediğimizde butona basıldığı anda StringRequest istediğinde bulunuyoruz ve sunucuya getParams methodunu ile gerekli parametre değerlerini gönderiyoruz. Php kodlarınıda incelerseniz neden bu şekilde değerler gönderdiğimi daha iyi anlayacaksınız. Aslında burada hangi değerleri göndereceğimiz hangi değerleri alacağımız servisin ne şekilde oluşturulduğuna bağlı. Bizden servisin istediği değerleri kullanıcı tek tek girdikten sonra butona basarak istekle bulunuyor. Burada dikkat etmemiz bir diğer konu ise; HashMap oluşturup değerleri gönderdiğimiz için bir key-value ilişkisi içerisinde olmak zorunda ve bizden beklenen key değerleri sunucu tarafında ne ise karşılığı android tarafında da o olmalıdır. Örn: kullaniciAdi yerine kullaniciadi yazmanız bile hatalı bir istek yapmanıza neden olacaktır. ( kullaniciAdi, adSoyad, posta, telefon, sifre ) StringRequest methodunda POST isteği yaptığımız ve hangi url e bu isteği gönderdiğimizde kodda açık bir şekilde belirtilmiştir. Eğer servisten hatasız bir şekilde bir cevap dönerse onResponse methoduna düştüğünü göreceksiniz eğer debug ederseniz ki kaynak kodları indirip çalıştırdıktan sonra debug etmeniz faydalı olacaktır. onResponse da bize gelen cevap String olduğu için biz onu önce JsonObject e çevirdik daha sonra içerisinde bize dönen cevaplardan “mesaj” kısmını alıp ekranda kullanıcıya gösterdik.

Bize dönen json stringini alıp bu linke yapıştırdığımızda eğer istek başarılı ise aşağıdaki cevabı aldığınızı göreceksiniz.

 

 

 

 

 

 

Eğer herhangi bir nedenden dolayı istek başarısız olursa onErrorResponse methoduna düşecektir ve kodlara baktığımızda sunucudan gelen cevabı parse edip ekranda gösteriyoruz.

POST ile ilgili ekran görüntümüz aşağıdadır:

PostRegisterUser.java

package com.mobilhanem.phprestapivolleyexample;

import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class PostRegisterUser extends AppCompatActivity {

    private Button executeBtn;
    private ProgressDialog progress;
    private EditText userName, userEmail, userPhone, userPassword, name;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getSupportActionBar().setTitle("POST İSTEĞİ");

        executeBtn = (Button)findViewById(R.id.executeBtn);
        userName = (EditText)findViewById(R.id.userName);
        userEmail = (EditText)findViewById(R.id.emailAddress);
        userPassword = (EditText)findViewById(R.id.password);
        userPhone = (EditText)findViewById(R.id.phoneNumber);
        name = (EditText)findViewById(R.id.nameSurname);

        executeBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                progress = ProgressDialog.show(PostRegisterUser.this,"",
                        "Lütfen Bekleyiniz", true);



                StringRequest jsonForPostRequest = new StringRequest(
                        Request.Method.POST,UrlConnection.BASE_URL,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {

                                progress.dismiss();
                                Log.i("log",response.toString());

                                JSONObject jsonObject = null;
                                try {
                                    jsonObject = new JSONObject(response);
                                    Toast.makeText(getApplicationContext(),""+jsonObject.getString("mesaj"),Toast.LENGTH_LONG).show();
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }

                            }


                        }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {

                        progress.dismiss();

                        NetworkResponse response = error.networkResponse;
                        if(response != null && response.data != null){
                            JSONObject jsonObject = null;
                            String errorMessage = null;

                            switch(response.statusCode){
                                case 400:
                                    errorMessage = new String(response.data);

                                    try {

                                        jsonObject = new JSONObject(errorMessage);
                                        String serverResponseMessage =  (String)jsonObject.get("hataMesaj");
                                        Toast.makeText(getApplicationContext(),""+serverResponseMessage,Toast.LENGTH_LONG).show();


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


                }) {

                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        Map<String,String> params = new HashMap<String, String>();

                        params.put("kullaniciAdi",userName.getText().toString());
                        params.put("adSoyad",name.getText().toString());
                        params.put("posta",userEmail.getText().toString());
                        params.put("telefon",userPhone.getText().toString());
                        params.put("sifre",userPassword.getText().toString());


                        return params;
                    }

                    @Override
                    public Map<String, String> getHeaders() throws AuthFailureError {

                        Map<String, String> param = new HashMap<String, String>();

                        return param;
                    }


                };

                jsonForPostRequest.setRetryPolicy(new DefaultRetryPolicy(10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

                AppController.getInstance().addToRequestQueue(jsonForPostRequest);


            }
        });
    }
}

POST ile ekleme işlemini tamamladıysak şimdi eklediğimiz kullanıcı ile ilgili bilgileri GET isteğini kullanarak ekranda gösterelim. Kaynak kodlarını incelediğimizde StringRequest istediğinde bulunuyoruz ve sunucuya “user_id” değeri ile görüntülemek istediğimiz kullanıcının id sini gönderiyoruz. GET isteğinde bulunduğumuz içinde ilgili url ile birlikte bu değeri eklemiş oluyoruz. Yine aynı şekilde herhangi bir sorun yok ise onResponse methoduna düşüyor ve dönen string değerini JsonObject sine çevirip ilgili değerleri çekerek ekranda gösteriyoruz. Yine herhangi bir hata oluşması durumunda onErrorResponse methoduna düşerek gerekli işlemleri yaptırıyoruz.

not: ( GET methodu ile yapılan istekler tarayıcının adres satırında görünür. )

( örnek: http://vehbiakdogan.com/mobilhanem/index.php?user_id=1 )

GET  isteği sonucu bize dönen json örneği aşağıdaki gibidir.

GET ile ilgili ekran görüntümüz aşağıdadır.

 

GetListUser.java

package com.mobilhanem.phprestapivolleyexample;

import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class GetListUser extends AppCompatActivity {

    private Button bttn;
    private ProgressDialog progress;
    private EditText userIdInput;
    private TextView txtId, txtNameSurname, txtUserName, txtEmail, txtPassword, txtPhone;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_get_list_user);

        getSupportActionBar().setTitle("GET İSTEĞİ");

        bttn = (Button)findViewById(R.id.button);
        txtId = (TextView) findViewById(R.id.userId);
        txtNameSurname = (TextView)findViewById(R.id.nameSurname);
        txtUserName = (TextView)findViewById(R.id.userName);
        txtEmail = (TextView)findViewById(R.id.userEmail);
        txtPassword = (TextView)findViewById(R.id.userPassword);
        txtPhone = (TextView)findViewById(R.id.userPhone);
        userIdInput = (EditText)findViewById(R.id.userIdText);


        bttn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(userIdInput.getText().length()>0){
                    clearUserInfos();
                    executeGetMethod();
                }else{
                    Toast.makeText(getApplicationContext(),"Lütfen Bilgilerini Getirmek İstediğiniz Kullanıcının ID sini giriniz!",Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    private void clearUserInfos() {

        txtId.setText("");
        txtNameSurname.setText("");
        txtUserName.setText("");
        txtEmail.setText("");
        txtPassword.setText("");
        txtPhone.setText("");
    }

    private void executeGetMethod() {

        progress = ProgressDialog.show(GetListUser.this,"",
                "Lütfen Bekleyiniz", true);


        int userID = Integer.parseInt(userIdInput.getText().toString());

        StringRequest jsonForGetRequest = new StringRequest(
                Request.Method.GET,"http://vehbiakdogan.com/mobilhanem/index.php?user_id=" + userID,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        progress.dismiss();
                        Log.i("log",response.toString());
                        try {
                            JSONObject obj = new JSONObject(response);
                            JSONObject jsonBody = obj.getJSONObject("uye-bilgileri");
                            txtId.setText(jsonBody.getString("id"));
                            txtUserName.setText(jsonBody.getString("kullaniciAdi"));
                            txtNameSurname.setText(jsonBody.getString("adSoyad"));
                            txtPassword.setText(jsonBody.getString("sifre"));
                            txtEmail.setText(jsonBody.getString("posta"));
                            txtPhone.setText(jsonBody.getString("telefon"));

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


                    }


                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {

                progress.dismiss();

                NetworkResponse response = error.networkResponse;
                if(response != null && response.data != null){
                    JSONObject jsonObject = null;
                    String errorMessage = null;

                    switch(response.statusCode){
                        case 400:
                            errorMessage = new String(response.data);

                            try {

                                jsonObject = new JSONObject(errorMessage);
                                String serverResponseMessage =  (String)jsonObject.get("hataMesaj");
                                Toast.makeText(getApplicationContext(),""+serverResponseMessage,Toast.LENGTH_LONG).show();


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


        }) {

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {

                Map<String, String> param = new HashMap<String, String>();

                return param;
            }


        };

        jsonForGetRequest.setRetryPolicy(new DefaultRetryPolicy(10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        AppController.getInstance().addToRequestQueue(jsonForGetRequest);

    }
}

GET isteği yaparak ekli olan kullanıcı ile ilgili bilgileride ekrana getirip gösterdiğimize göre şimdi kullanıcı id sine göre istediğimiz kullanıcıya ait bilgileri nasıl güncelleyeceğimize bakalım. Güncelleme içinde  JsonObjectRequest methodunu kullanarak PUT isteğimizi gerçekleştiriyoruz. Kaynak kodlara bakarsak eğer; güncelleme için sunucunun bizden istediği değerleri JsonObject kullanarak base url e gönderdiğimizi göreceksiniz. ( kullanici_adi, ad_soyad, posta, telefon, user_id değerlerini kullanıyoruz ve kullanıcı tarafından girilen verileri bu değerler ile ilişkilendirip gönderiyoruz. )

PUT  isteği sonucu bize dönen json örneği aşağıdaki gibidir.

 

 

 

 

 

PUT ile ilgili ekran görüntümüz aşağıdadır.

PutUpdateUser.java

package com.mobilhanem.phprestapivolleyexample;

import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class PutUpdateUser extends AppCompatActivity {

    private Button updateBttn;
    private ProgressDialog progress;
    private EditText userName, userEmail, userPhone, name, userId;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_put_update_user);

        getSupportActionBar().setTitle("PUT İSTEĞİ");

        updateBttn = (Button)findViewById(R.id.updateBttn);
        userId = (EditText)findViewById(R.id.userId);
        userName = (EditText)findViewById(R.id.userName);
        userEmail = (EditText)findViewById(R.id.emailAddress);
        userPhone = (EditText)findViewById(R.id.phoneNumber);
        name = (EditText)findViewById(R.id.nameSurname);

        updateBttn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if(userName.getText().length()>0 && userEmail.getText().length()>0
                        && userPhone.getText().length()>0 && name.getText().length()>0
                        && userId.getText().length()>0){

                    executePutMethod();
                }else{

                    Toast.makeText(getApplicationContext(),"Lütfen Gerekli Alanları Doldurunuz!",Toast.LENGTH_SHORT).show();
                }

            }
        });
    }

    private void executePutMethod() {


        progress = ProgressDialog.show(PutUpdateUser.this,"",
                "Lütfen Bekleyiniz", true);


        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("kullanici_adi", userName.getText().toString());
            jsonObject.put("ad_soyad", name.getText().toString());
            jsonObject.put("posta", userEmail.getText().toString());
            jsonObject.put("telefon", userPhone.getText().toString());
            jsonObject.put("user_id", userId.getText().toString());
        } catch (JSONException e) {
            // handle exception
        }


        JsonObjectRequest jsonForPutRequest = new JsonObjectRequest(
                Request.Method.PUT,UrlConnection.BASE_URL,jsonObject,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {

                        progress.dismiss();
                        Log.i("log",response.toString());
                        try {
                            Toast.makeText(getApplicationContext(),""+response.getString("mesaj"),Toast.LENGTH_LONG).show();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }


                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {

                progress.dismiss();

                NetworkResponse response = error.networkResponse;
                if(response != null && response.data != null){
                    JSONObject jsonObject = null;
                    String errorMessage = null;

                    switch(response.statusCode){
                        case 400:
                            errorMessage = new String(response.data);

                            try {

                                jsonObject = new JSONObject(errorMessage);
                                String serverResponseMessage =  (String)jsonObject.get("hataMesaj");
                                Toast.makeText(getApplicationContext(),""+serverResponseMessage,Toast.LENGTH_LONG).show();


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


        }) {


            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {

                Map<String, String> param = new HashMap<String, String>();

                return param;
            }


        };

        jsonForPutRequest.setRetryPolicy(new DefaultRetryPolicy(10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        AppController.getInstance().addToRequestQueue(jsonForPutRequest);


    }
}

PUT isteği yaparak ekli olan kullanıcı ile ilgili bilgileride güncellediğimize göre şimdi kullanıcı id sine göre istediğimiz kullanıcıyı nasıl sileceğimize bakalım. Silmek içinde  StringRequest methodunu kullanarak DELETE isteğimizi gerçekleştiriyoruz. Kaynak kodlarını incelediğimizde sunucuya “user_id” değeri ile silmek istediğimiz kullanıcının kullanıcı id sini gönderdiğimizi göreceksiniz. GET isteğinde bulunduğumuz içinde ilgili url ile birlikte bu değeri eklemiş oluyoruz.

DELETE  isteği sonucu bize dönen json örneği aşağıdaki gibidir.

 

 

 

 

 

DELETE ile ilgili ekran görüntümüz aşağıdadır.

 

package com.mobilhanem.phprestapivolleyexample;

import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class DeleteUser extends AppCompatActivity {

    private ProgressDialog progress;
    private Button deleteBttn;
    private EditText inputUserId;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_delete_user);

        getSupportActionBar().setTitle("DELETE İSTEĞİ");

        deleteBttn = (Button)findViewById(R.id.deleteBtn);
        inputUserId = (EditText)findViewById(R.id.userIdInput);

        deleteBttn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(inputUserId.getText().length()>0){
                    deleteRequest();
                }else{
                    Toast.makeText(getApplicationContext(),"Lütfen Silmek İstediğiniz Kullanıcının ID sini giriniz!",Toast.LENGTH_SHORT).show();
                }
            }
        });


    }

    private void deleteRequest() {


        progress = ProgressDialog.show(DeleteUser.this,"",
                "Lütfen Bekleyiniz", true);


        int userID = Integer.parseInt(inputUserId.getText().toString());

        StringRequest jsonForPutRequest = new StringRequest(
                Request.Method.DELETE,"http://vehbiakdogan.com/mobilhanem/index.php?user_id=" + userID,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        progress.dismiss();
                        Log.i("log",response.toString());
                        try {
                            JSONObject json = new JSONObject(response);
                            Toast.makeText(getApplicationContext(),""+json.getString("mesaj"),Toast.LENGTH_LONG).show();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }


                    }


                }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {

                progress.dismiss();

                NetworkResponse response = error.networkResponse;
                if(response != null && response.data != null){
                    JSONObject jsonObject = null;
                    String errorMessage = null;

                    switch(response.statusCode){
                        case 400:
                            errorMessage = new String(response.data);

                            try {

                                jsonObject = new JSONObject(errorMessage);
                                String serverResponseMessage =  (String)jsonObject.get("hataMesaj");
                                Toast.makeText(getApplicationContext(),""+serverResponseMessage,Toast.LENGTH_LONG).show();


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


        }) {


            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {

                Map<String, String> param = new HashMap<String, String>();

                return param;
            }


        };

        jsonForPutRequest.setRetryPolicy(new DefaultRetryPolicy(10000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        AppController.getInstance().addToRequestQueue(jsonForPutRequest);
    }
}

Daha sonra bu söylediğim istekleri gerçekleştirmek için ekrana dört adet buton koyuyoruz ve tıklandığında ilgili sayfalara yönlendiriyoruz ; ilk çalışacak olan activity miz aşağıdadır.

HomeActivity.java

package com.mobilhanem.phprestapivolleyexample;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class HomeActivity extends AppCompatActivity implements View.OnClickListener{

    private Button postBttn, getBttn, putBttn, deleteBttn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        postBttn = (Button)findViewById(R.id.postBttn);
        getBttn = (Button)findViewById(R.id.getBttn);
        putBttn = (Button)findViewById(R.id.putBttn);
        deleteBttn = (Button)findViewById(R.id.deleteBtn);

        postBttn.setOnClickListener(this);
        getBttn.setOnClickListener(this);
        putBttn.setOnClickListener(this);
        deleteBttn.setOnClickListener(this);
    }

    Intent intent = null;
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.postBttn:
                intent = new Intent(getApplicationContext(),PostRegisterUser.class);
                startActivity(intent);
                break;

            case R.id.getBttn:
                intent = new Intent(getApplicationContext(),GetListUser.class);
                startActivity(intent);
                break;

            case R.id.putBttn:
                intent = new Intent(getApplicationContext(),PutUpdateUser.class);
                startActivity(intent);
                break;

            case R.id.deleteBtn:
                intent = new Intent(getApplicationContext(),DeleteUser.class);
                startActivity(intent);
                break;
        }
    }
}

Gördüğünüz gibi Volley ile Rest Api Kullanımı nı gerçekleştirdik. ( POST, GET, PUT, DELETE ) isteklerini hangi senaryolarda gerçekleştirdiğimizi gördük. Kullanıcı ekleyebilmek için POST methodunu kullandık daha sonra eklediğimiz kullanıcı bilgileri gösterebilmek için GET methodunu kullandık, kullanıcıda güncelleme yapabilmek için PUT methodunu kullandık ve son olarak kullanıcıyı silebilmek için DELETE methodunu kullandık.

Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.

Mobilhanem.com üzerinden anlattığımız mobil uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.

Bir dahaki dersimizde görüşmek dileğiyle..

2

Alper Beyler

Yüksek Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği
Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği (4/3.30) (2010-2014)
Lisans : Viyana Teknik Üniversitesi / Bilgisayar Bilimleri (2013)

12 Yorum

  • gerçekten çok iyi anlatım olmuş elinize sağlık hocam. yayınladığınız dersleri video lu olarak göstermeniz uzun zamnadır beklediğim bir konuydu.

    • ne demek elimizden geldiğince yardımcı olmaya çalışıyoruz. evet artık video lu olarak ders içeriklerini hazırlamaya özen gösteriyoruz.

  • Hocam tam böyle bir konuyu öğrenmeme gerek olduğu sırada bunu paylaşmanız çok önemli benim için. Bunun için size teşekkür ederim.

  • Alper hocam güzel bir çalışma olmuş tebrikler. Aklima takilan kisim şu. Volley ile php server arasinda guvenli bir iletişim nasil saglanabilir. Mesela volley ile hangi parametrelerin post edildiği uygulama tersine mühendislikle decompile edildiğinde anlaşılabilir. Dışardan basit bir form aracılığı ile servere saldırı olabilir. Rest api ile php servisin yalnizca uygulamadan gelecek requestlere cevap verebilme özelliği nasıl sağlanabilir. Saygılarımla

    • ssl kullanabilirsin böylece dinleme yapmayı engellersin. token kullanırsın android tarafında da proguard ile kodları karıştırırsın çözülmesini zorlaştırmış olursun.

  • İyi günler ben şöyle bir sorun yaşıyorum. ListView’a Jsoup ile parçaladığım xml parçalarını ekliyorum fakat bunu ekranda gösterdiğimde listView boş gözüküyor. Taa ki ekranı bir kez açıp kapayıncaya kadar…

    Yani sorunum activityi güncellemek sanırım ama nasıl yapmalıyım bununla ilgili bir kod bloğu mevcutsa paylaşırsanız sevinirim…

  • Aynı işlemleri asynctask ile yapmamız mümkün mü? Retrofit ile volley arasında bir fark var mıdır?

  • Merhaba, eğitim gayet güzel olmuş, teşekkürler. Ben rest api yazdığım sizin dersinizle, şimdi de volley ile bağlanmaya çalışıyorum. Post yöntemi ile kullanıcı girişi yapmak istiyorum. Gelen response’a göre giriş yapılacak. Ancak sitedeki kodları aynen yazmama rağmen çalıştırdığımda NullPointerException hatası alıyorum AppController’daki methodlarla alakalı. Neyi yanlış yapıyorum acaba? yardımcı olursanız çok sevinirim, şimdiden teşekkürler.

  • Post kısmındaki UrlConnection.BASE_URL bu nereden geliyor onu bulamadım yardımcı olur musunuz rica etsem?

    • Onun yerine yukarıda global bir değişken olarak

      String Url = “(buraya bilgisayarının ipadresi /mobilhanem/index.php)”;

      ifadesini tanımlayıp UrlConnection.BASE_URL ‘nin yerine Url ‘yi yazarak devam edebilirsin.

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?