ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [안드로이드] volly 로 안드로이드와 서버의 연결(get ,post)
    Android & Kotlin 2021. 5. 18. 15:08

     1.volly를 사용하는 이유

    안드로이드에서 서버로 요청을 보내고 응답을 받는 기능은 HttpURLConnection 객체를 통해 이루어 질수 있다.  그러나 해당 방법은 thread 와 핸들러의 컨트롤을 직접해야하며 특히 여러 요청을 보내게 될때는 핸들러에서 오류가 터질 가능성도 있다. 이때 다음과 같은 문제를 volly라이브러리를통해 해결할  수 있다.

     

    volly 는 요청 객채(요청 하나하나가 들어갈 상자)를 만들고 , 해당 객체에 요청 큐를 넣어주면 요청 객체가 내부적으로 스레드를 만들어 응답을 처리해준다.

     

     

    2.구현 순서

     

    0. 라이브러리 추가 / 메니패스트 추가

    implementation 'com.android.volley:volley:1.1.0'
    <uses-permission android:name="android.permission.INTERNET"/>
    
      <application
            android:usesCleartextTraffic="true"
    

     

    1. 요청 객체 생성 

    : 요청 객체는 해당 액티비티 뿐 아니라 다른 액티비티에서도 사용하기 때문에 static 으로 생성하고 따로 클래스를 만들어서 관리하는것이 좋다.

    public class AppHelper{
    static RequestQueue requestQueue;
    }
    
    ------------------------------------------
    
    if (AppHelper.requestQueue == null){
                AppHelper.requestQueue = Volley.newRequestQueue(getApplicationContext());
            }

     

    2. 요청 큐 생성

    : 익명 클래스 형태를 가지며 (객체 생성과 도시에 인터페이스 구현 혹은 override)

      StringRequest 클래스로 생성하며  파라미터로는 순서대로 

     

    - get/post 선택

    - 웹사이트 주소

    - 응답 받을 리스너 객체

    - 에러 발생시 호출될 리스너 객체

     

    3. 요청 객체에 큐 넣기

    stringrequest를  통해 요청 큐를 생성하고

    이전 응답을 사용할 필요가 없다면 setShouldCache를 false로 설정하고

    add 메서드를 통해 요청큐를 요청객체에 추가한다.

    요청객체에 추가된 요청큐는 RequestQueue 내부에서 자동적으로 처리해줌(+쓰레드 관리까지)

     

    해당 방법은 get 방법이고 get방법에서는 getParams를 생략하여 요청해도 된다.

    만약 post 방식을 사용한다면 method 부분을 post 로 고치고 getParms를 오버라이드 하여 params에 다음과 같이 정보를 추가여 요청할 수 있다.

    params.put("id" ,"id321")
    params.put("pwd" ,"1234")

     

     

     

    댓글

Designed by Tistory.