Android & Kotlin

[안드로이드] volly 로 안드로이드와 서버의 연결(get ,post)

쉽코기 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")