본문 바로가기
안드로이드 코드

아무것도 안정확해서 내가 쓰는 안드로이드 <-> PHP <-> mysql (3) 안드로이드로 JSON 파일 받아보기

by 우딬 2020. 9. 5.

안드로이드에서 php파일을 읽어와야지  이걸로 데이터를 뿌리던지 할게 아니겠습니까

 

그래서 안드로이드에서 php파일을 불러오는 방법을 알아봅시다.

 

방법은 크게 두가지가 있다.

 

1. 소켓을 이용해서 웹으로 요청하는 방법

2. Volley를 사용해서 JSON을 다루는 방법

 

소켓을 사용하면 좋은점도 있지만, 하나하나 스레드를 만들어 줘야하는데,

Volley는 굳이 스레드를 사용자가 안 만들어도 만들어지기때문에 편리하고,

보통 인터넷이나 유튜브에서 소개하는 코드또한 Volley로 많이 되어있다.

 

Volley를 사용해서 JSON 불러오기

 

Volley는 요청(Request)객체를 만들고

요청 객체를 요청 큐(Request Queue)에 넣으면 알아서 통신해 주기때문에 편리하다.

 

1. manifest 만지기

 

 

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

android:usesCleartextTraffic="true"

 

추가하기

 

인터넷이 연결이 되어야하고, 저거 Traffic이 없으면 http랑 연결을 못한다고 에러가 떳음

그래서 저 두개를 매니페이스에서 추가해 줘야합니다.

 

2. Volley 외부 라이브러리 추가하기 

저기 Module:app 이라는데 들어가서 dependencies 아래에 이걸 추가한다.

 

implementation 'com.android.volley:volley:1.1.0'

 

그리고 저거 눌려주면 라이브러리 다운로드 됩니다.

 

그리고 다운로드 받으면 3~5분정도 기다려라 라이브러리 써지니까 왜 안되냐고 책상 칠 필요 없음

 

 

3. Volley 라이브러리 사용하기

 

import android.app.Activity;
import android.os.Bundle;
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 java.util.HashMap;
import java.util.Map;

public class MainActivity extends Activity {
    static RequestQueue requestQueue;

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

        //요청 큐가 없으면 요청 큐 생성하기
        //나중에 여기다가 데이터 담으면 알아서!!!!!!! 통신함 ㅋ
        if(requestQueue == null){
            requestQueue = Volley.newRequestQueue(getApplicationContext());
        }

        login();

    }

    public void login() {
        //php url 입력
        String URL = "http://godlove5949.dothome.co.kr/login.php";

        StringRequest request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                //응답이 되었을때 response로 값이 들어옴
                Toast.makeText(getApplicationContext(), "응답:" + response, Toast.LENGTH_SHORT).show();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //에러나면 error로 나옴
                Toast.makeText(getApplicationContext(), "에러:" + error.getMessage(), Toast.LENGTH_SHORT).show();

            }

        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> param = new HashMap<String, String>();
                //php로 설정값을 보낼 수 있음
                return param;
            }
        };


        request.setShouldCache(false);
        requestQueue.add(request);
    }

}

 

이렇게 php 의 JSON 파일을 보냈다! 

 

오늘의 요약

1. manifest에 추가하기

2. build.gradle에 추가하기

3. 예시 코드 활용해서 JSON 받아오는거 확인하기

 

댓글