//封装的OkHttp工具类[java] view plain copy<span style="font-size:18px;">public class NetUtil { Tojson tojson; MyHandler myhandler=new MyHandler(); public void getOkhttp(String surl){ //创建对象 OkHttpClient client=new OkHttpClient(); //创建请求 Request request=new Request.Builder().url(surl).build(); //创建队列 Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //失败 Message msg=new Message(); msg.what=0; msg.obj="失败"; myhandler.sendMessage(msg); } @Override public void onResponse(Call call, Response response) throws IOException { //成功 String json = response.body().string(); Message msg=new Message(); msg.what=1; msg.obj=json; myhandler.sendMessage(msg); } }); } //写一个接口用于外部访问 public interface Tojson{ void error(String error); void success(String json); } //提供方法给外部访问 public void getjson(Tojson tojson){ this.tojson=tojson; } class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int w = msg.what; if(w==0){ String error= (String) msg.obj; tojson.error(error); } if(w==1){ String json= (String) msg.obj; tojson.success(json); } } } }</span> //登录布局[java] view plain copy<span style="font-size:18px;"><LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:app="https://schemas.android.com/apk/res-auto" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.bwie.biaodanyanzheng.MainActivity"> <TextView android:textSize="30sp" android:padding="5dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录" android:layout_gravity="center"/> <View android:background="#999999" android:layout_width="match_parent" android:layout_height="0.75dp"/> <EditText android:id="@+id/tel" android:hint="请输入手机号" android:layout_marginTop="20dp" android:layout_gravity="center" android:ems="15" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/pwd" android:hint="请输入密码" android:layout_marginTop="20dp" android:layout_gravity="center" android:ems="15" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:layout_marginTop="20dp" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:onClick="dl" android:textSize="20sp" android:text="登录" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:onClick="zc" android:layout_marginLeft="20px" android:textSize="20sp" android:text="注册" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout></span> //登录代码[java] view plain copy<span style="font-size:18px;">public class MainActivity extends AppCompatActivity implements NetUtil.Tojson{ String url="https://120.27.23.105/user/login"; private EditText tel; private EditText pwd; private SharedPreferences zidong; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化控件 initViews(); } private void initViews() { tel = findViewById(R.id.tel); pwd = findViewById(R.id.pwd); //创建记录的xml文件 zidong = getSharedPreferences("zidong", MODE_PRIVATE); //设置自动登录的装状态 boolean jizhu = zidong.getBoolean("jizhu", false); if(jizhu){//如果为真就证明登录过,跳转 //获取值 String t = zidong.getString("tel",null); String p = zidong.getString("pwd",null); int uid = zidong.getInt("uid", -1); //赋值 tel.setText(t); pwd.setText(p); //跳转到个人页面 Intent intent=new Intent(MainActivity.this,Main3Activity.class); intent.putExtra("uid",uid); startActivity(intent); } } public void dl(View v){ //获取输入框的值 String t = tel.getText().toString().trim(); String p = pwd.getText().toString().trim(); //请求网络 NetUtil netUtil=new NetUtil(); netUtil.getOkhttp(url+"?mobile="+t+"&password="+p); netUtil.getjson(this); } public void zc(View v){ Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivityForResult(intent,1); } //回跳的方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //展示到界面 tel.setText(data.getStringExtra("tel")); pwd.setText(data.getStringExtra("pwd")); } @Override public void error(String error) { } @Override public void success(String json) { try { //使用原生josn 因为返回的类不一样,所以要使用原生的json JSONObject jsonObject=new JSONObject(json); String code = jsonObject.getString("code"); if(code.equals("0")){ Gson gson=new Gson(); zhece zhece = gson.fromJson(json, zhece.class); //如果登录成功,保存值,并改变记录状态 SharedPreferences.Editor edit = zidong.edit(); edit.putBoolean("jizhu",true); edit.putString("tel",zhece.getData().getMobile()); edit.putString("pwd",zhece.getData().getMobile()); edit.putInt("uid",zhece.getData().getUid()); edit.commit(); //跳转到个人页面 Intent intent=new Intent(MainActivity.this,Main3Activity.class); intent.putExtra("uid",zhece.getData().getUid()); startActivity(intent); }else { Toast.makeText(MainActivity.this,jsonObject.getString("msg") + "请注册",Toast.LENGTH_LONG).show(); } } catch (Exception e) { e.printStackTrace(); } } }</span> //注册页面代码[java] view plain copy<span style="font-size:18px;">public class Main2Activity extends AppCompatActivity implements NetUtil.Tojson{ String url="https://120.27.23.105/user/reg"; private EditText ztel; private EditText zpwd; private String pwd; private String tel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); //初始化数据 initViews(); } private void initViews() { ztel = findViewById(R.id.ztel); zpwd = findViewById(R.id.zpwd); } public void ljzc(View v){ //获取网络数据 NetUtil netUtil=new NetUtil(); //获取输入框数据 pwd = zpwd.getText().toString().trim(); tel = ztel.getText().toString().trim(); //获取数据 netUtil.getOkhttp(url+"?mobile="+ tel +"&password="+ pwd); //接口回调 netUtil.getjson(this); } @Override public void error(String error) { } @Override public void success(String json) { //获取数据 Gson g=new Gson(); zhece zhece = g.fromJson(json, zhece.class); String code = zhece.getCode(); if(code.equals("1")){ Toast.makeText(Main2Activity.this,zhece.getMsg(),Toast.LENGTH_LONG).show(); } //注册成功,回跳登录页面 if(code.equals("0")){ Intent intent = new Intent(); intent.putExtra("tel",tel); intent.putExtra("pwd",pwd); setResult(0,intent); finish(); } } }</span> //个人页面代码[java] view plain copy<span style="font-size:18px;">public class Main3Activity extends AppCompatActivity implements NetUtil.Tojson{ String url="https://120.27.23.105/user/getUserInfo"; private TextView name; private TextView pass; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); Intent intent = getIntent(); //获取数据 int uid = intent.getIntExtra("uid",-1); //获取控件 name = findViewById(R.id.name); pass = findViewById(R.id.pass); //请求数据 NetUtil netUtil=new NetUtil(); netUtil.getOkhttp(url+"?uid="+uid); netUtil.getjson(this); } public void tui(View v){ //点击推出按钮,清空数据回到登录页面 SharedPreferences zidong = getSharedPreferences("zidong", MODE_PRIVATE); zidong.edit().clear().commit(); //跳转到登录页面 Intent intent=new Intent(Main3Activity.this,MainActivity.class); startActivity(intent); } @Override public void error(String error) { } @Override public void success(String json) { //获取数据 JSONObject jsonObject= null; try { jsonObject = new JSONObject(json); String code = jsonObject.getString("code"); if(code.equals("0")){ Gson g=new Gson(); zhece zhece = g.fromJson(json, zhece.class); //给赋值 name.setText(zhece.getData().getUid()+""); pass.setText(zhece.getData().getUsername()); } } catch (JSONException e) { e.printStackTrace(); } } }</span> //封装的OkHttp工具类[java] view plain copy&l