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);
'Android' 카테고리의 다른 글
Android - Json 데이터 파싱하는 방법 (0) | 2022.07.12 |
---|---|
Android - Volley로 네트워크 통신할 때, Timeout 시간 조절하기 (0) | 2022.07.12 |
Android Studio - LifeCycle 라이프사이클 (0) | 2022.07.11 |
Android Studio - ProgressBar 활용하기 (0) | 2022.07.11 |
Android Studio - TextView의 setText 함수에서 쉽게 숫자를 문자열로 변경하기 (0) | 2022.07.08 |
댓글