当前位置 博文首页 > 李猫er:【Android项目实战 | 从零开始写app(五)】okhttp+gson实

    李猫er:【Android项目实战 | 从零开始写app(五)】okhttp+gson实

    作者:[db:作者] 时间:2021-07-08 13:03

    本篇实现效果:

    使用Okhttp3进行联网请求,通过post方法把用户名和密码发送到服务进行校验,如果账户已存在则提示,注册成功后,使用Gson解析返回的json数据提示用户,如下:

    (额,这里要说一下:提示逻辑处理有点问题,这里代码已经修改好了,但是gif中还没有,由于时间不是很多就不再录制一遍了,见谅~)
    在这里插入图片描述

    文章导航

    一、【Android项目实战 | 从零开始写app(一)】 创建项目

    二、【Android项目实战 | 从零开始写app(二)】实现闪屏页,启动app

    三、【Android项目实战 | 从零开始写app(三)】实现引导页,进入登录or主页面

    四、【Android项目实战 | 从零开始写app(四)】Okhttp+Gson实现服务端登录验证功能

    五、【Android项目实战 | 从零开始写app(五)】okhttp+gson实现服务端注册功能

    六、【Android项目实战 | 从零开始写app(六)】用TabLayout+ViewPager搭建App 框架主页面底部导航栏

    七、【Android项目实战 | 从零开始写app(七)】优化主页导航栏,禁用主页页面滑动切换效果

    八、【Android项目实战 | 从零开始写app(八)】实现app首页广告轮播图切换和搜索跳转

    九、【Android项目实战 | 从零开始写app(九)】Tablayout+ViewPager实现页面分类顶部标题页面联动切换

    十、【Android项目实战 | 从零开始写app(十)】Okhttp+glide+json+ListView实现新闻模块数据的填充显示

    十一、【Android项目实战 | 从零开始写app(十一)】实现app首页智慧服务页面服务分类数据的解析及点击跳转

    十二、【Android项目实战 | 从零开始写app(十二)】实现app首页智慧服务&热门推荐&热门主题、新闻

    十三、【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录&信息修改等功能

    十四、【Android项目实战 | 从零开始写app(十四)】实现图片发布模块 | 必知必会之调用系统相机拍照、相册

    十五、【Android项目实战 | 从零开始写app(教程汇总)】Android 项目实战系列汇总、源代码


    逻辑功能实现:

    RegisterActivity.class:

    package com.example.myapp.activity;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.provider.CallLog;
    import android.text.TextUtils;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    import android.widget.Toast;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    
    import com.example.myapp.R;
    import com.example.myapp.bean.ResultBean;
    import com.example.myapp.utils.APIConfig;
    import com.google.gson.Gson;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.io.IOException;
    
    import okhttp3.Call;
    import okhttp3.Callback;
    import okhttp3.MediaType;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.RequestBody;
    import okhttp3.Response;
    
    public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
    
        private EditText et_name;
        private EditText et_nicke;
        private EditText et_phonr;
        private EditText et_password;
        private RadioButton rb_man;
        private RadioButton rb_woman;
        private RadioGroup rg_sex;
        private Button btn_register;
        private Button btn_login;
    
        private OkHttpClient client = new OkHttpClient();
        private Intent intent = null;
    
        String sex = "";
        private Handler handler = new Handler() {
            @Override
            public void handleMessage(@NonNull Message msg) {
                super.handleMessage(msg);
                if (msg.what==0) {
                    String resultStr = (String) msg.obj;
                    Log.i("获取返回的信息:",resultStr);
                    final ResultBean resultBean = new Gson().fromJson(resultStr,ResultBean.class);
                    int resultCode = resultBean.getCode();
                    if (resultCode==200){
                        Toast.makeText(getApplicationContext(),"注册成功:"+resultStr,Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getApplicationContext(),"注册失败:"+resultStr,Toast.LENGTH_LONG).show();
                    }
    
                }
            }
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
            initView();
        }
    
        private void initView() {
            et_name = (EditText) findViewById(R.id.et_name);
            et_nicke = (EditText) findViewById(R.id.et_nicke);
            et_phonr = (EditText) findViewById(R.id.et_phone);
            et_password = (EditText) findViewById(R.id.et_password);
            rb_man = (RadioButton) findViewById(R.id.rb_man);
            rb_woman = (RadioButton) findViewById(R.id.rb_woman);
            rg_sex = (RadioGroup) findViewById(R.id.rg_sex);
            btn_register = (Button) findViewById(R.id.btn_register);
            btn_login = (Button) findViewById(R.id.btn_login);
    
            btn_register.setOnClickListener(this);
            btn_login.setOnClickListener(this);
            rg_sex.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    if (checkedId==rb_man.getId()) {
                        sex="1";
                    }else {
                        sex="0";
                    }
                }
            });
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btn_register:
                    Register();
                    break;
                case R.id.btn_login:
                    intent = new Intent(getApplicationContext(),LoginActivity.class);
                    startActivity(intent);
                    break;
            }
        }
    
        private void Register() {
            // validate
            String name = et_name.getText().toString().trim();
            if (TextUtils.isEmpty(name)) {
                Toast.makeText(this, "请输入用户名", Toast.LENGTH_SHORT).show();
                return;