반응형
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);
}
반응형