728x90
  • 1) 안드로이드스튜디오 와 php 인터페이스관리
  • 2) php와 mysql 인터페이스 관리

1) 안드로이드스튜디오와 php 인터페이스

 

그림 (1)  CheckActivity.java 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class CheckActivity extends AppCompatActivity {
    private EditText userid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_check);
        userid=findViewById(R.id.userid);
        Intent intent = getIntent();
        final int number= intent.getIntExtra("number",1);
        final String userID = intent.getStringExtra("userid");
        final int date= intent.getIntExtra("date",1);
        Response.Listener<String> responseListener = new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    boolean success = jsonObject.getBoolean("success");
                    if ( success) {  //성공
                        Toast.makeText(getApplicationContext(),"성공하였습니다.",Toast.LENGTH_SHORT).show();
                       
                        userid.setText(jsonObject.getString("userid"));   //서버로부터 가져오는것
                    }
                    else  // 실패
                    {
                        Toast.makeText(getApplicationContext(),"실패",Toast.LENGTH_SHORT).show();
                        return;
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        };
        //서버로 volley를 이용해서 요청 
        CheckRequest checkRequest = new CheckRequest(userID,date,number,responseListener);
        RequestQueue queue = Volley.newRequestQueue(CheckActivity.this);
        queue.add(checkRequest);
    }
}
 
cs

외부에서 받아온 데이터를 안드로이드스튜디오의 어떤 지점에서 이용하고 싶을때  12~36번째 줄을 해당 지점에 추가하면 된다 

 

16번째줄에 생성된 jsonObject 객체는 17,21번째 줄과 같이 외부데이터에 접근할때 이용된다.

 

34번째줄에서 객체 checkRequest를 생성함(CheckRequest class는 따로 만들어야함)   

CheckRequest 파라미터로 들어가는 값은 외부에 전달하는 데이터(신호)임 

 

35번째,36번째줄에서 Volley는 안드로이드 앱에서 HTTP 통신을 조금 더 쉽게 구현할수 있게 하는 API임 

RequestQueue: 서버 요청자. 다른 Request 클래스들의 정보대로 서버에 요청을 보내는 역할임

즉,기본적인 구조는 CheckRequest 와 같은 Request 클래스들을 이용하여 서버 요청 정보와 결과 처리 방법을 표현하고, 이 Request 객체를 RequestQueue에 넘겨 서버 요청이 발생하는 구조입니다.
안드로이드 프로그래밍에서 Volley 및 HTTP통신에 대해 더 자세히 알고 싶으면 깡샘님의 블로그를 참조.

 

 

그림 (2) CheckRequest.java 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class CheckRequest extends StringRequest {
 
    // 서버 URL 설정 ( PHP 파일 연동 )
    final static private String URL = "http://fkdlxkakstp.dothome.co.kr/Select_detail.php";
    private Map<String,String> map;
 
    public CheckRequest(String userid,int date,int number, Response.Listener<String> listener){
        super(Method.POST ,  URL, listener , null);
 
        map = new HashMap<>();
        map.put( "userid",userid);
        map.put( "date",date+"");
        map.put("number",number+"");
 
    }
 
    @Override
    protected Map<StringString> getParams() throws AuthFailureError {
        return map;
    }
}
 
cs

다시한번 말하지만 ,

기본적인 구조는 CheckRequest 와 같은 Request 클래스들을 이용하여 서버 요청 정보와 결과 처리 방법을 표현하고, 이 Request 객체를 RequestQueue에 넘겨 서버 요청이 발생하는 구조입니다.

 

참고로, 1번째 줄에서 StringRequest 를 상속 받는데 StringRequest는 서버로부터 문자열 데이터를 얻을 목적으로 사용하는 클래스다.

 

4번째 줄의 URL에 들어간 값은 내가 웹 호스팅업체로부터 할당받은 공간에 Select_detail.php라는 내가 미리짜논 php파일을 넣어 둔 것임

 

5번째, 10번쨰 줄은 해쉬맵을 선언 해 준것이고  < 키(key) , 값(value) > 를 <String,String> 으로 정하였다.

 

7번째 줄은 생성자이며 , 생성자의 파라미터는 그림(1)의 34번째 줄 설명에서 이미 말하였다.  외부에 보내줄 데이터이다.

 

8번째 줄은 부모클래스의 생성자를 호출한다.

StringRequest 파라미터에 대한 자세한 설명

더보기

객체를 생성하면서 생성자 매개변수로 서버 요청 정보와 결과 처리 콜백을 등록합니다.

첫 번째 매개변수는 HTTP Method로서 GET이나 POST로 지정되고, 두 번째 매개변수는 서버 URL 정보입니다. 세 번째 매개변수가 결과 콜백이며, 네 번째 매개변수가 에러 콜백입니다. 서버로부터 수신된 문자열 데이터를 전달할 목적으로 세 번째 매개변수로 지정된 콜백의

onResponse( ) 함수가 자동으로 호출되며, 이 함수의 매개변수로 서버 수신 문자열이 전달됩니다.

출처: https://kkangsnote.tistory.com/45 [깡샘의 토마토]

 

 

10~13번째 줄은 php파일에서 데이터를 인식하기 위해 만드는 설정이다.

 

18,19번째 줄에서 getParams를 재정의하고 서버에 전송할 데이터를 Map객체에 담아 반환하는 형태이다. (조금 모호하긴 함)

+ Recent posts