본문 바로가기

모바일 개발/안드로이드

로그인, 회원가입 만들기(2) - 회원가입 요청

안녕하세요 저번에 이어서 만들겠습니다.

 

일단 저희가 로그인을 하면 요청을 보내주는 페이지를 따로 만들 겁니다.

 

로그인 페이지 > 요청 페이지 > 서버 응답 > 로그인 성공 > 메인 페이지

 

대충 이런 형식으로 만들겠습니다.

 

java

 

실제로 보이는 페이지일 필요는 없으니 자바 코드만 작성하기만 하면 되잖아요? 그러니 new > java class 생성합니다.

 

회원가입 요청입니다.

 

먼저 회원가입 요청부터 만드는 게 좋겠죠.

 

일단 작성을 합니다.

 

이렇게

 

하면 빨간 줄이 그어져 있을 거예요. 이때 오류 난 곳에 alt+enter을 누르면 무슨 문제이고 해결 방법을 알려줍니다.

import... 나오는 거 하시면 됩니다.

 

그러고 나서도 빨간 줄 그어져 있을 거예요. 그거는 생성자가 없어서 그렇습니다.

그 문제는 차차 해결하고 일단 서버 URL 변수 선언 해주겠습니다.

final static private String URL = "http://192.168.0.7/join.php";

 

상수값으로 선언하고 static으로 해당 클래스의 모든 객체에 접근 가능하게 했습니다.

그리고 저기에 자신의 서버 IP에 회원가입 요청이니 서버에 저장해두신 회원가입 하는 php문이랑 연결하시면 됩니다!

 

 

참고로 최종 코드는 맨 밑에 올릴게요.

 

 

다음 줄에 추가하겠습니다.

private Map<String, String> map;

이걸 추가하시면 빨간 줄이 그어지실 거예요. 마찬가지로 alt+enter하시면 오류 해결됩니다.

오류 해결방법 중에 import class 하시면 돼요.

 

안드로이드에는 이런 간단한 문법 오류는 매우 쉽게 해결이 가능합니다. 그저 alt+enter만 하면 되니깐요!

이 뒤에서도 뭔가 추가하고 작성할 때 다른 모듈을 import 즉 안 가져와서 오류 난 것은 alt+enter로 해결하겠습니다.

 

 

Map은 매핑 함수입니다. 매핑이란 간단히 말해 사물함 번호라고 보시면 돼요.

Map에 키 값과 데이터를 저장을 해서 나중에 키 값만 검색해도 데이터를 찾을 수 있게 해 줍니다.

 

 

이제 서버에 보낼 데이터 변수를 설정하겠습니다. 생성자 만들겠습니다.

(수정) 각 변수 이름은 저희가 DB에 저장한 이름 있죠? DB에 맞춰서 선언하겠습니다.

public RegisterRequest(String user_id, String user_pw, String user_email, String user_phone, Response.Listener<String> listener) {
}

 

이러면 마찬가지로 Response에 빨간 줄 그어져 있을 겁니다. alt+enter 합니다.

 

import class 하면 사라집니다.

 

참 쉽죠

 

그리고 이 안에 이 줄 추가합니다.

 

super(Method.POST, URL, listener, null);

super는 부모 클래스의 생성자 호출할 때 쓰이는 함수입니다. 이때 부모 클래스는 StringRequest 이겠죠!

 

다음에 매핑은 Hash로 이용하겠습니다. 외부에서 쉽게 노출이 안되기 위함입니다.

 

그리고 밑 줄에 저희가 요청 보낼 데이터를 매핑하겠습니다.

 

map = new HashMap<>();
map.put("user_id",user_id);
map.put("user_pw",user_pw);
map.put("user_email",user_email);
map.put("user_phone",user_phone);

 

마찬가지로 빨간 줄 그어져 있으면 alt+enter 해서 import class 하시면 됩니다.

만약 int 형식인 값을 보내고 싶으신 경우가 있으실 거예요. 그땐 

 

map.put("useridx",useridx+""); 이렇게 끝에 "" 적으면 자동으로 String으로 변환됩니다.

 

그다음 새로운 함수 가져오겠습니다.

ctrl+o (알파벳 o입니다.)

 

getParams 검색

 

뭐 누를 필요 없이 getParams 치시면 자동 검색 됩니다. 그리고 저 Map을 골라서 함수를 가져오겠습니다.

 

 

 

그리고 밑에 super.getParams(); 는 지우고 map을 적겠습니다.

 

이렇게요.

 

이 함수는 http 요청의 매개변수들을 반환하는 역할 합니다.

 

그러니 이렇게 retuen map을 하면 저희가 방금 매핑한 데이터들이 POST 방식으로 보내지려고 하니

return map 통해 알아서 POST 방식의 body에 데이터가 들어가게 해 준다고 하네요!

 

보통 이 함수는 POST 방식으로 요청을 보낼 때 이용한다고 합니다.

 

이러면 알아서 서버 통신에 join.php에 데이터들이 잘 가지겠죠! 심지어 매핑까지 되어 있어서

스니핑 공격은 안 통할 겁니다.

 

이제 이거랑 거의 비슷하게 로그인도 만들겠습니다.

그거는 다음 포스팅에 이어서 하도록 하겠습니다.