원쥬
원주는 공부중
원쥬
전체 방문자
오늘
어제
  • 분류 전체보기 (29)
    • Django (0)
    • Vue3 (2)
    • Android (7)
    • Arduino (0)
    • JSPServlet (0)
    • CSS (0)
    • HTML (0)
    • Java (9)
      • Java (9)
      • JavaFestival (0)
    • JavaScript (0)
    • Machine Learning (5)
    • Python (2)
    • Project (1)
      • first_project (1)
      • second_project (0)
      • third_project (0)
    • Tistory (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • machinelearning
  • vscode
  • while문
  • android
  • Vue3
  • pandas
  • 손글씨데이터
  • 영화데이터
  • 안드로이드
  • Android Stuido
  • visible
  • button
  • v-on
  • Python
  • 안드로이드 스튜디오
  • while
  • Ref
  • 사라지게하기
  • textarea 오른쪽 하단
  • 폰트바꾸기
  • matplotlib
  • v-model
  • AndroidStudio
  • JSON
  • API
  • invisible
  • v-bind
  • while문 예제
  • machine learning
  • volley

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
원쥬

원주는 공부중

[Android Studio] Volley 사용하기 & Volley 예제/ 통신하기
Android

[Android Studio] Volley 사용하기 & Volley 예제/ 통신하기

2022. 7. 15. 11:51

네트워크 통신 - Client <---> Server

web 요청 기술

- HttpURLConnection

- URL

-InputStream

-Thread, Handler

복잡하다

 

Volley란?

복잡한 web 요청기술 사용하지 않고 더 간단한 HTTP 통신을 위해 안드로이드에서 제공하는 HTTP 통신 라이브러리 

 

Volley 동작원리

Volley 동작 순서

Volley 사용하기

 

1. 코드 입력하는 방법

 

Volley 바로가기

 

Volley 개요  |  Android 개발자  |  Android Developers

Volley 개요 Volley는 Android 앱의 네트워킹을 더 쉽고, 무엇보다도 더 빠르게 하는 HTTP 라이브러리입니다. Volley는 GitHub에서 사용할 수 있습니다. Volley를 사용하면 다음과 같은 이점이 있습니다. 네트

developer.android.com

사이트에 접속 후 dependencies 에 있는 코드를 복사 해 온다 ↓

 implementation 'com.android.volley:volley:1.1.1'

프로젝트 내 Gradle Script ->  build.gradle(Module) -> dependencies에 붙여넣은 후 

상단에 Sync Now 클릭!

 

 

2. Andriod Studio 내에서 다운받기

 

메뉴바 File -> Project Structure 클릭

 

Dependencies -> app - > + 버튼의 Library Dependency 클릭

volley (대문자로 하면 안나옴......) 검색 후 사용하고 싶은 버젼 클릭 후 OK

나는 설정 손대지 않고 OK 클릭 후 기다리면 끝!

 

간단한 요청/응답 실습

 

activity_main.xml

플레인텍스트, 버튼, 텍스트뷰 세가지를 만들어주자

 

MainActivity.java

코드 작성

public class MainActivity extends AppCompatActivity {

    EditText txt_url;
    Button btn_req;
    TextView txt_result;

    // Volley 사용 시 꼭 필요한 객체 선언
    RequestQueue requestQueue; // 요청을 서버에 전달 (보내주는) 기능
    StringRequest request; // 요청과 응답에 대한 정보를 담는 기능



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txt_url = findViewById(R.id.txt_url);
        btn_req = findViewById(R.id.btn_req);
        txt_result = findViewById(R.id.txt_result);

        // requestQueue 객체 초기화 하기!
        requestQueue = Volley.newRequestQueue(getApplicationContext());
        // requestQueue = Volley.newRequestQueue(MainActivity.this);

        btn_req.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 요청하고자 하는 url 주소 가져오기
                String url = txt_url.getText().toString();

                // 1. 전송방식 -> get/post
                // 2. 요청할 url 주소
                // 3. 응답에 성공 시 수행할 로직을 작성
                // 4. 응답에 실패 시 수행할 로직을 작성

                request = new StringRequest(
                        // 1. 전송방식 -> get/post
                        Request.Method.GET,

                        // 2. 요청할 url 주소
                        url,

                        // 3. 응답에 성공 시 수행할 로직을 작성
                        response -> {
                            // 응답 성공 시 진행할 로직 작성
                            txt_result.setText(response);

                        },

                        // 4. 응답에 실패 시 수행할 로직을 작성
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                // 응답 실패 시 진행할 로직 작성
                                Toast.makeText(getApplicationContext(),
                                        error.toString(),
                                        Toast.LENGTH_SHORT).show();
                            }
                        }
                );

                // 서버에 전달하기 위한 작업 ☆☆☆
                requestQueue.add(request);

            }
        });





    }
}

AndroidManifest.xml

Volley 사용 시 필요한 인터넷 권한 지정해주자

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

https 도 사용하기 위해서 코드 작성

android:usesCleartextTraffic="true"

 

짠 잘 되는것을 확인할 수 있다.

 

이클립스로 내가만든 사이트 내에 접속하기!!

 

이클립스 내에 새로운 다이나믹 웹 프로젝트를 만들어주자!

(이미 만들어져 있어서 오류나는 것!)

src/main/java에 새로운 Servlet파일을 만들어 주자

 

console 창에서 확인하기 위해 "안드로이드 테스트!" 라는 출력문을 찍어주고

페이지 내에 "안녕하세용" 출력하기 위해서

한글 인코딩과 printwriter 꺼내오기~

response.setContentType("text/html; charset=utf-8");

PrintWriter out = response.getWriter();

MainActivity.java  에서 url 주소만 내 사이트 주소로 바꿔주자

버튼 클릭시 내가 띄운 안녕하세용 이 잘 출력되는것을 확인할 수 있다

 

Get방식으로 페이지에 데이터 보내기

쿼리스트링으로 데이터를 보내보자

public class MainActivity extends AppCompatActivity {

    EditText txt_url;
    Button btn_req;
    TextView txt_result;

    // Volley 사용 시 꼭 필요한 객체 선언
    RequestQueue requestQueue; // 요청을 서버에 전달 (보내주는) 기능
    StringRequest request; // 요청과 응답에 대한 정보를 담는 기능

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txt_url = findViewById(R.id.txt_url);
        btn_req = findViewById(R.id.btn_req);
        txt_result = findViewById(R.id.txt_result);

        // requestQueue 객체 초기화 하기!
        requestQueue = Volley.newRequestQueue(getApplicationContext());
        // requestQueue = Volley.newRequestQueue(MainActivity.this);

        btn_req.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 요청하고자 하는 url 주소 가져오기
                String data = txt_url.getText().toString();

                // 1. 전송방식 -> get/post
                // 2. 요청할 url 주소
                // 3. 응답에 성공 시 수행할 로직을 작성
                // 4. 응답에 실패 시 수행할 로직을 작성

                request = new StringRequest(
                        // 1. 전송방식 -> get/post
                        Request.Method.GET,

                        // 2. 요청할 url 주소
                        "http://192.168.0.96:8083/AndroidTest/andoridTest?data="+data,

                        // 3. 응답에 성공 시 수행할 로직을 작성
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                // 응답 성공 시 진행할 로직 작성
                                try {
                                    JSONObject json = new JSONObject(response);
                                    String result = json.getString("result");
                                    txt_result.setText(result);
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                            }
                        },

                        // 4. 응답에 실패 시 수행할 로직을 작성
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                // 응답 실패 시 진행할 로직 작성
                                Toast.makeText(getApplicationContext(),
                                        error.toString(),
                                        Toast.LENGTH_SHORT).show();
                            }
                        }
                );
                // 서버에 전달하기 위한 작업 ☆☆☆
                requestQueue.add(request);
            }
        });

    }
}

 

Post방식으로 페이지에 데이터 보내기

- post 방식은 데이터를 보내기 위해 새로운 메소드가 요구된다

package com.example.ex_0715;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class MainActivity extends AppCompatActivity {

    EditText txt_url;
    Button btn_req;
    TextView txt_result;

    // Volley 사용 시 꼭 필요한 객체 선언
    RequestQueue requestQueue; // 요청을 서버에 전달 (보내주는) 기능
    StringRequest request; // 요청과 응답에 대한 정보를 담는 기능



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        txt_url = findViewById(R.id.txt_url);
        btn_req = findViewById(R.id.btn_req);
        txt_result = findViewById(R.id.txt_result);

        // requestQueue 객체 초기화 하기!
        requestQueue = Volley.newRequestQueue(getApplicationContext());
        // requestQueue = Volley.newRequestQueue(MainActivity.this);

        btn_req.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 요청하고자 하는 url 주소 가져오기
                String data = txt_url.getText().toString();

                // 1. 전송방식 -> get/post
                // 2. 요청할 url 주소
                // 3. 응답에 성공 시 수행할 로직을 작성
                // 4. 응답에 실패 시 수행할 로직을 작성

                request = new StringRequest(
                        // 1. 전송방식 -> get/post
                        Request.Method.POST,

                        // 2. 요청할 url 주소
                        //"http://192.168.0.96:8083/AndroidTest/andoridTest?data="+data,
                        "http://192.168.0.96:8083/AndroidTest/andoridTest",

                        // 3. 응답에 성공 시 수행할 로직을 작성
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                // 응답 성공 시 진행할 로직 작성

                                try {
                                    JSONObject json = new JSONObject(response);
                                    String result = json.getString("result");
                                    txt_result.setText(result);

                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }



                            }
                        },

                        // 4. 응답에 실패 시 수행할 로직을 작성
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                // 응답 실패 시 진행할 로직 작성
                                Toast.makeText(getApplicationContext(),
                                        error.toString(),
                                        Toast.LENGTH_SHORT).show();
                            }
                        }



                ){

                    // post 방식일 때 데이터를 추가하기 위한 별도의 메소드가 필요하다!
                    // getParams() 입력!

                    @Nullable
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {

                        Map<String,String> params = new HashMap<>();

                        params.put("data",data);

                        return params;

                    }
                };

                // 서버에 전달하기 위한 작업 ☆☆☆
                requestQueue.add(request);

            }
        });





    }
}

성공!

저작자표시 (새창열림)

'Android' 카테고리의 다른 글

[Android Studio] 안드로이드 스튜디오 Event 실습 02  (0) 2022.07.22
[Android Studio] 영화 API를 이용한 실습  (0) 2022.07.18
[Android Studio] 안드로이드 스튜디오 Event & Event 실습  (0) 2022.07.08
[Android Studio] Layout이란? Layout 기본예제  (0) 2022.07.07
[Android Studio] 안드로이드 스튜디오 프로젝트 만들기 & 기본 예제  (0) 2022.07.07
    원쥬
    원쥬
    Git : https://github.com/wonjuju/

    티스토리툴바