본문 바로가기
  • 콩's 코딩노트
Android

Android Studio - 안드로이드 네트워크 통신을 위한 Volley 라이브러리 / AndroidManifest.xml 파일 설정법

by Cong_S 2022. 7. 11.

Volley 라이브러리에 대해 알아보자.

앱에서 서버와 http 통신을 할 때 HttpURLConnection을 사용하면 직접 요청과 응답을 받는 것이 가능하다.

하지만 직접 쓰레드를 구현해야 하며, 기본적인 코드 양 또한 많아 코드가 복잡해진다는 단점이 있다.

그래서 안드로이드에서는 쉽고 빠른 http 통신을 위해 Volley 라이브러리를 제공하고 있다.

// volley 가져오기

dependencies {
	implementation 'com.android.volley:volley:1.2.1'
}

build.gradle의 dependencies에 라이브러리를 추가하자.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="자신의 패키지 이름"
    android:targetSandboxVersion="1">      <<< 추가

    <uses-permission android:name="android.permission.INTERNET"/>   <<< 추가

    <application
        android:usesCleartextTraffic="true"   <<< 추가  
        android:networkSecurityConfig="@xml/network_security_config"  <<< 추가
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Lylics"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 AndroidManifest.xml 파일에 uses-permission 태그로 INTERNET 권한을 추가하자.

(<<< 추가로 표시된 부분이 새로 입력된 코드)

 

 

위와 같은 새로운 파일 추가

 

 RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
               
                JsonObjectRequest jsonObjectRequest =
                        new JsonObjectRequest(Request.Method.GET, apiUrl, null, new Response.Listener<JSONObject>() {

                            @Override
                            public void onResponse(JSONObject response) {

                                // 3. 서버로부터 응답(Response)를 받아서, 텍스트뷰에 표시한다.

                                // API를 호출한 결과가 여기서 실행된다.
                                // 따라서 우리는 여기에다가, 가사를 화면에 보여주는 코드를 작성.
                                // 즉, txtLyrics 에 가사를 보여준다.

                                Log.i("MyLyrics", response.toString());
                                txtLyrics.setText(response.toString());

                            }
                        }, new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Log.i("MyLyrics", error.toString());
                            }
                        });

Volley 라이브러리를 사용하기 위해 Requestqueue 생성 (실질적으로 데이터를 전송하고 수신받는 객체)

 MainActivity 파일에서 네트워크 통신을 위한 Request 를 만들어야 하는데,

JSON 으로 통신하기 때문에 JsonObjectRequest 클래스를 객체 생성한다.

파라미터에는 http 메소드, API URL, 전달할 데이터, 응답받으면 실행할 코드, 에러를 받으면 실행할 코드

이 때 파라미터로는 다음과 같은 내용들을 순서대로 넣어주어야 한다.

 

1. 요청 방식 (GET 또는 POST)

2. 요청을 보낼 url

3. 응답을 받았을 때 호출될 메소드 (Response.Listener)

4. 에러가 발생했을 때 호출될 메소드 (Response.ErrorListener)

 

그리고 끝에는 { } 를 추가하여 요청을 보낼 때 포함시킬 파라미터를 넣을 수 있다.

 

// 아래 코드가 실제로, 네트워크로 호출하라는 코드!
// 이 코드가 없으면, 네트워크 호출 안합니다.!!!!!
requestQueue.add(request);

 

 

댓글