개발학습일지

[Android Studio] 네트워크 라이브러리 _ Volley 본문

Android Studio

[Android Studio] 네트워크 라이브러리 _ Volley

처카푸 2024. 6. 10. 17:38

네트워크 라이브러리 

 

Volley

1. 라이브러리 설치하기

- 설치 코드 확인

*Volley 설명 사이트 참고

- Gradle 모듈에 설치하기

implementation("com.android.volley:volley:1.2.1")

implementation("com.android.volley:volley:1.2.1")

- manufests/AndroidManifest.xml 에 권한 설정해 주기

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

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

 

 

2. onCreate 함수 안에 네트워크 통신하는 코드작성

        // 네트워크로 부터 데이터를 받아온다.
        // Volley 라이브러리를 이용한 네트워크 통신

        // 1. request queue 를 만든다.
        RequestQueue queue = Volley.newRequestQueue(MainActivity.this);

        // 2. request(요청) 를 만든다.
        // 데이터 타입은, 응답의 json 형식을 보고 결정한다.
        // {} JsonObjectRequest , [] JsonArrayRequest
        JsonObjectRequest request = new JsonObjectRequest(
                Request.Method.GET,
                "https://block1-image-test.s3.ap-northeast-2.amazonaws.com/employees.json",
                null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        // 네트워크 통신 성공했을 때
                        progressBar.setVisibility(View.GONE);

                        Log.i("EMPLOYER", response.toString());
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        // 네트워크 통신 실패 했을 때
                        progressBar.setVisibility(View.GONE);

                        Toast.makeText(MainActivity.this, "네트워크 통신 에러", Toast.LENGTH_SHORT).show();

                        Log.i("EMPLOYER MAIN", error.toString());
                    }
                }
        );

        // 3. 네트워크로 보낸다.
        queue.add(request);

 

3. 네트워크와 열결 할 때 보여주는 progressBar를 액티비티에 보여준다.

- progressBar 가운데에 정렬하기 _ layout_centerInParent를 true로 해주기 

layout_centerInParent

- 네트워크를 받아오면 눈에 안 보이게 하는 코드 작성하기 (위에 이미 작성되어 있음!)

progressBar.setVisibility(View.GONE);

 

4. parse(parsing) 하기 _ 내가 필요한 부분만 꺼내온다.

- 네트워크 통신 성공했을 때 가져온다.

        JsonObjectRequest request = new JsonObjectRequest(
                Request.Method.GET,
                "https://block1-image-test.s3.ap-northeast-2.amazonaws.com/employees.json",
                null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        // 네트워크 통신 성공했을 때
                        progressBar.setVisibility(View.GONE);

                        Log.i("EMPLOYER", response.toString());

                        try {
                        // 나의 데이터 형식 "status"="success"
                            String status = response.getString("status");
                            if(status.equals("success")==false){
                                Toast.makeText(MainActivity.this,
                                        "파싱 에러",
                                        Toast.LENGTH_SHORT).show();
                                return;
                            }
                            // 나의 데이터 형식 "data"=[{24가지}]
                            JSONArray data = response.getJSONArray("data");
                            for(int i = 0 ; i < data.length() ; i++){
                                JSONObject row = data.getJSONObject(i);
                                int id = row.getInt("id");
                                String name = row.getString("employee_name");
                                int salary = row.getInt("employee_salary");
                                int age =  row.getInt("employee_age");

                                Employer employer = new Employer(id, name, salary, age);
                                employerArrayList.add(employer);
                            }

                            // 어뎁터를 만들고
                            // 리사이클러뷰에 어뎁터를 적용하면 화면에 나온다.
                            adapter = new EmployerAdapter(MainActivity.this, employerArrayList);
                            recyclerView.setAdapter(adapter);

                        } catch (JSONException e) {
                            Toast.makeText(MainActivity.this,
                                    "파싱 에러",
                                    Toast.LENGTH_SHORT).show();
                            return;
                        }
                    }

 

5. 어뎁터 패키지, 파일 만들기

https://msdev-st.tistory.com/184

 

[Android Studio] Adapter.java 사용하기

Adapter 사용하기 1. 뷰 홀더 클래스를 만든다.- row.xml 파일과 이어주고, 변수 이름 저장하는 곳// 1. 뷰 홀더 클래스 만든다 public class ViewHolder extends RecyclerView.ViewHolder { TextView txtName; TextView txtAge; Te

msdev-st.tistory.com

 

 

 


* Volley 설명 사이트

https://google.github.io/volley/

 

Volley overview

Volley overview Volley is an HTTP library that makes networking for Android apps easier and most importantly, faster. Volley is available on GitHub. Volley offers the following benefits: Automatic scheduling of network requests. Multiple concurrent network

google.github.io

* JSON 형식 정리해 주는 사이트

- JSON 데이터를 넣고 tree 형식으로 COPY 하면 정리된 JSON 데이터를 확인할 수 있다.

https://jsoneditoronline.org/

 

JSON Editor Online: edit JSON, format JSON, query JSON

JSON Editor Online is the original and most copied JSON Editor on the web. Use it to view, edit, format, repair, compare, query, transform, validate, and share your JSON data.

jsoneditoronline.org