Android(Java) - Volley (네트워크 통신) 사용 방법

반응형

 

 

Volley

  •  Android 앱의 네트워킹을 더 쉽고, 무엇보다도 더 빠르게 하는 HTTP 라이브러리

Volley 라이브러리 호출하기

  • Gradle Scripts - build.gradle (Module ~.app)
  • dependecies 부분에 아래의 문구 추가
implementation 'com.android.volley:volley:1.2.1'


인터넷 권한 추가

  • Volley를 사용하려면 앱의 매니페스트에  android.permission.INTERNET  을 추가
  • 이렇게 하지 않으면, 앱이 네트워크에 연결 할 수 없음
<uses-permission android:name="android.permission.INTERNET"/>

사용 방법

RequestQueue

  • 네트워크 작업 실행, 캐시 읽고 쓰기 및 응답 파싱을 위해 작업자 스레드를 관리
  • Volley.newRequestQueue 메서드를 사용하여 요청을 전송
  • 요청을 생성한 후 add()로 RequestQueue에 추가
  • 요청을 취소하려면 cancel() 호출

newRequestQueue 사용

  • 기본값으로 RequestQueue를 설정하고 큐를 시작하는 Volley.newRequestQueue 메서드 선언
  • 네트워크 통신을 위한 객체 생성
  • 생성자는 HTTP Method, URL, JsonRequest(전달 데이터), Listener(실행 코드) 입력
  • 설정한 객체의 값을 리퀘스트큐에 요청 생성, add()

RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);

// 네트워크 통신을 위한 JsonObjectRequest 객체 생성
// 생성자 : http Method, API URL, 전달할 데이터, 실행 코드(Listener)
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, URL, null,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
            	try{ // Json Parsing
                    String data = response.getString("key"); // 키 값 입력
                    txtView.setText(data);
                } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Network Error", Toast.LENGTH_SHORT).show();
                }
            }
        }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.i("onErrorResponse", error.toString());
    }
});
requestQueue.add((jsonObjectRequest));

Json Parsing

  • onResponse 메소드에서 API를 호출 하여 Json의 형태로 데이터를 교환
  • 형태에 맞는 데이터타입으로 값을 받아옴
  • 위의 소스 코드에서 예시
    • 1. Json 데이터를 response에 담아 전송
    • 2. 전송된 데이터 키 값의 타입을 맞춰 데이터 호출
    • 3. 저장할 변수에 저장
public void onResponse(JSONObject response) {
    String data = response.getString("key"); // 키 값 입력
    txtView.setText(data);
}
반응형