반응형
package org.techtown.management;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
public class LoginRequest extends StringRequest {
final static private String URL = "http://pssin1.cafe24.com/Login.php";
private Map<String, String> parameters;
public LoginRequest(String userID, String userPassword, Response.Listener<String> listener){
super(Method.POST, URL, listener, null);
parameters = new HashMap<>();
parameters.put("userID",userID);
parameters.put("userPassword", userPassword);
}
@Override
public Map<String, String > getParams(){
return parameters;
}
}
java 메인문에 클래스를 추가해줍니다 LoginRequest로 설정해줍니다
(RegisterRequest)랑 비슷하므로 복사해서 수정하시면 됩니다.
final static private String URL = "http://pssin1.cafe24.com/Login.php";
php서버를 입력해줍니다 이때 DB에는 login을 처리하는 SQL이 작성되어있습니다.
private Map<String, String> parameters;
String 두개로 구현된 parameters를 만들어서 DB에서 값을 받아옵니다.
public LoginRequest(String userID, String userPassword, Response.Listener<String> listener){
super(Method.POST, URL, listener, null);
parameters = new HashMap<>();
parameters.put("userID",userID);
parameters.put("userPassword", userPassword);
}
LoginRequest는 로그인 요청이들어오면 userID와 userPssword를 받아
POST방식으로 전송합니다. 이때 parameters에 HashMap을 넣어서
put함수를 통해 "userID" <-DB테이블에있는 변수를 불러와 userID에 넣습니다.
public Map<String, String > getParams(){
return parameters;
}
php에 작성되어있는 success나 그외를 반환합니다.
package org.techtown.management;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;
import org.json.JSONObject;
import java.security.spec.ECField;
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
final TextView idText = (TextView) findViewById(R.id.idText);
final TextView passwordText = (TextView) findViewById(R.id.passwordText);
final Button loginButton = (Button) findViewById(R.id.loginButton);
final TextView registerButton = (TextView) findViewById(R.id.registerButton);
//버튼을 눌럿을때 이벤트 처리
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//레지스트 인텐트로 넘어갈수록 해준다
Intent registerIntent = new Intent(LoginActivity.this,RegisterActivity.class);
LoginActivity.this.startActivity(registerIntent);
}
});
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
final String userID = idText.getText().toString();
final String userPassword = passwordText.getText().toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try
{
JSONObject jsonResponse = new JSONObject(response);
boolean success =jsonResponse.getBoolean("success");
if(success){
String userID = jsonResponse.getString("userID");
String userPassword = jsonResponse.getString("userPassword");
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
intent.putExtra("userID",userID);
intent.putExtra("userPassword",userPassword);
LoginActivity.this.startActivity(intent);
}
else{
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setMessage("로그인에 실패하였습니다.")
.setNegativeButton("다시 시도",null)
.create()
.show();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
LoginRequest loginRequest = new LoginRequest(userID,userPassword,responseListener);
RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
queue.add(loginRequest);
}
});
}
}
Login Activity 소스
Response.Listener<String> responseListener = new Response.Listener<String>() {
Response.Listener 내부클래스로 인터넷으로 접속한뒤 response를 저장할수있게해준다.
JSONObject jsonResponse = new JSONObject(response);
boolean success =jsonResponse.getBoolean("success");
JSNObject 를 이용해서 response를 저장할수 있겠금합니다.
php파일에서 success를 이용했는데 그값이 참이라면 true값을 반환합니다.
if(success){
String userID = jsonResponse.getString("userID");
String userPassword = jsonResponse.getString("userPassword");
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
intent.putExtra("userID",userID);
intent.putExtra("userPassword",userPassword);
LoginActivity.this.startActivity(intent);
}
로그인 성공시
else{
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
builder.setMessage("로그인에 실패하였습니다.")
.setNegativeButton("다시 시도",null)
.create()
.show();
}
로그인 실패시
LoginRequest loginRequest = new LoginRequest(userID,userPassword,responseListener);
RequestQueue queue = Volley.newRequestQueue(LoginActivity.this);
queue.add(loginRequest);
값들을 매개변수로 넘겨주고
RequestQueue를 이용해서 인터넷으로 접속해서 rsponse를보내고 request를 받아온다.
package org.techtown.management;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView idText = (TextView) findViewById(R.id.idText);
TextView passwordText = (TextView) findViewById(R.id.passwordText);
TextView welcomeMessage = (TextView) findViewById(R.id.welcomeMessage);
Intent intent = getIntent();
String userID = intent.getStringExtra("userID");
String userPassword = intent.getStringExtra("userPassword");
String message = "환영합니다, " + userID + "님!";
idText.setText(userID);
passwordText.setText(userPassword);
welcomeMessage.setText(message);
}
}
main_Activity소스
반응형
'개인공부' 카테고리의 다른 글
안드로이드 : 회원 관리 프로젝트(리스트 뷰) (0) | 2020.07.08 |
---|---|
안드로이드 : 회원 관리 프로젝트(회원 출력,버튼 hide) (0) | 2020.07.08 |
안드로이드 : 회원 관리 프로젝트(회원가입) (0) | 2020.07.08 |
안드로이드 : 회원 관리 프로젝트(DB구축) (0) | 2020.07.08 |
안드로이드 : 회원 관리 프로젝트(디자인) (0) | 2020.07.08 |