//封装的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="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://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="http://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="http://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="http://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>