android登录demo,AndroidStudio练习用--登录Demo

记录一个登录Demo。本来只是想写一个登录接口,postman用来试验关联测试的,顺便写一下前台,重新练习一下。

登录接口:

http://localhost:8080/RegisterDemo/RegisterDemo?name=XXX&password=XXXXXX

返回json字符串{"code":"xxx","name":"xxx","password":"xxxxxx","token":"xxxxxx"}

参考《第一行代码Android》数据持久化和网络应用。发现这是只能保存一个用户数据。

1.点击按钮,调用线程方法发出Http请求

2.线程根据返回结果字符串(需要解析)发送异步消息msg.what

3.异步处理根据消息值msg.what,决定是否存储账号密码和跳转新页面

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;

import android.content.SharedPreferences;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.CheckBox;

import android.widget.EditText;

import android.widget.Toast;

import org.json.JSONObject;

import java.util.HashMap;

import java.util.Map;

import okhttp3.OkHttpClient;

import okhttp3.Request;

import okhttp3.Response;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

String name;

String password;

String token;

String code;

String result;

private CheckBox remeberPass;

SharedPreferences sharedPreferences;

//使用异步消息处理,等服务器回消息,再决定是否进入下一个Activity,以及是否存储账号密码。

private Handler handler= new Handler(){

public void handleMessage(Message msg){

switch(msg.what){

case 1:

Intent intent=new Intent("com.idx.registerdemo.ACTION_START");

intent.addCategory("com.idx.registerdemo.REGISTER");

//只是一些简单数据,采用sharePreferences存储,文件名RegisterData

sharedPreferences=getSharedPreferences("RegisterData",0);

SharedPreferences.Editor editor=sharedPreferences.edit();

//如果复选框被选中,要求记录账号密码,就存储到RegisterData中

if(remeberPass.isChecked()){

editor.putBoolean("remeber_password",true);

editor.putString("name",name);

editor.putString("password",password);

editor.putString("token",token);

editor.putString("code",code);

}else{//清除记录

editor.clear();

}

editor.apply();//提交数据

startActivity(intent);

break;

case 0:

Toast.makeText(getApplicationContext(),result,Toast.LENGTH_SHORT).show();

break;

default:

break;

}

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

final EditText username=(EditText) findViewById(R.id.username);

final EditText passwd=(EditText) findViewById(R.id.passwd);

Button bt_register=(Button)findViewById(R.id.bt_register);

remeberPass=findViewById(R.id.is_rember);

//从sharedPreferences存储的RegisterData文件中取数据

sharedPreferences=getSharedPreferences("RegisterData",0);

boolean isRemeber=sharedPreferences.getBoolean("remeber_password",false);

if (isRemeber){//true时,设置Edittext内容

username.setText(sharedPreferences.getString("name",""));

passwd.setText(sharedPreferences.getString("password",""));

remeberPass.setChecked(true);

}

bt_register.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

try{

/**

String name="zdy";

String password="123456";

if(true){

Intent intent=new Intent("com.idx.registerdemo.ACTION_START");

intent.addCategory("com.idx.registerdemo.REGISTER");

intent.putExtra("name",name);

intent.putExtra("password",password);

startActivity(intent);

}

*/

String name=username.getText().toString();

String password=passwd.getText().toString();

//调用方法,发送账号密码进行验证

sendRequestWithOKHttp3(name,password);

}catch(Exception e){

e.printStackTrace();

}

}

});

}

private void sendRequestWithOKHttp3(final String name,final String password){

new Thread(new Runnable(){

public void run(){

try{

//http://localhost:8080/RegisterDemo/RegisterDemo?name=zdy&password=123456

String URL="http://192.168.1.146:8080/RegisterDemo/RegisterDemo?name="+name+"&password="+password;

OkHttpClient client=new OkHttpClient();

Request request=new Request.Builder()

//指定访问服务器的地址

.url(URL)

.build();

Response response=client.newCall(request).execute();

String responseData=response.body().string();

//调用转换方法,把服务器返回字符串 转换成Map对象

HashMap responseMap=(HashMap) parseJsonWithJSONObject(responseData);

//根据响应数据code值,发送异步消息,决定是否跳转页面

Message message= new Message();

if (responseMap.get("code").equals("200")){

message.what=1;

}else{

message.what=0;

}

handler.sendMessage(message);

}catch(Exception e){

e.printStackTrace();

}

}

}).start();

}

private Map parseJsonWithJSONObject(String jsonData){

HashMap responseData=new HashMap();

try{

JSONObject jsonObject=new JSONObject(jsonData);

code=jsonObject.getString("code");

if (code.equals("200")){

name=jsonObject.getString("name");

password=jsonObject.getString("password");

token=jsonObject.getString("token");

Log.d(TAG, "登录成功结果返回: "+token);

}else{

result=jsonObject.getString("result");

Log.d(TAG, "登录失败结果返回: "+result);

}

//responseData.put("name",name);

//responseData.put("password",password);

//responseData.put("token",token);

responseData.put("code",code);

}catch(Exception e){

e.printStackTrace();

}

return responseData;

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值