【Android】 使用okhttp实现注册登录功能(与服务器端)

来源:互联网 发布:怎么把mac照片导入u盘 编辑:程序博客网 时间:2024/06/07 06:44

我先贴上我们服务器端注册相关的说明:

请求方式:POST

参数 :username,password

URL  : http://**************/register?(这个我就不贴上来了)

返回值:{status:400, msg:"注册失败", data:null}{status:200, msg:"注册成功", data:null}


       首先,注册功能的实现思路是,将EditText文本框内用户输入的数值取出,接着通过post方法将取出的值发送到服务器端对应的参数上,然后服务器会进行判断,将返回值反馈给客户端,我这里服务器上返回的是一串简单的json格式字符串,我们在将获取的返回json字符串进行解析,通过判断status值来给出提示是否注册成功(200表示成功,400表示失败);简单的json字符串解析可通过gson来解析。

       需要获得联网权限,在AndroidMainfest中配置

<uses-permission android:name="android.permission.INTERNET" />
在build.gradle(app)文件中添加okhttp和gson :
compile 'com.squareup.okhttp3:okhttp:3.9.0'compile 'com.google.code.gson:gson:2.8.2'
将这些配置好了,直接看下面代码即可

UserBeanl类
public class UserBean {    private String status;    private  String msg;    private String data;   public String getStatus() {        return status;    }    public void setStatus(String status) {        this.status = status;    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }    public String getData() {        return data;    }    public void setData(String data) {        this.data = data;    }}
实现的功能代码RegisterActivity
public class RegisterActivity extends AppCompatActivity{    private EditText name;    private EditText pwd;    private String name1,pwd1;    private Button reg;    private List<UserBean>list;    final OkHttpClient client = new OkHttpClient();    private Handler mHandler = new Handler(){        @Override        public void handleMessage(Message msg){            if(msg.what==1){                String ReturnMessage = (String) msg.obj;                Log.i("获取的返回信息",ReturnMessage);                final UserBean userBean = new Gson().fromJson(ReturnMessage, UserBean.class);                final String AA = userBean.getMsg();                /***                 * 在此处可以通过获取到的Msg值来判断                 * 给出用户提示注册成功 与否,以及判断是否用户名已经存在                 */                Log.i("MSGhahahha", AA);            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);/** * 初始化 */        name = (EditText) findViewById(R.id.name);        pwd = (EditText) findViewById(R.id.pwd);        reg = (Button) findViewById(R.id.register);        reg.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //获取相关参数                name1=name.getText().toString().trim();                pwd1=pwd.getText().toString().trim();                //通过okhttp发起post请求                postRequest(name1,pwd1);            }        });    }    /**     * post请求后台     * @param username     * @param password     */    private void postRequest(String username,String password)  {        //建立请求表单,添加上传服务器的参数        RequestBody formBody = new FormBody.Builder()                .add("username",name1)                .add("password",pwd1)                .build();        //发起请求        final Request request = new Request.Builder()                .url("http://**************/login?")                .post(formBody)                .build();        //新建一个线程,用于得到服务器响应的参数        new Thread(new Runnable() {            @Override            public void run() {                Response response = null;                try {                    //回调                    response = client.newCall(request).execute();                    if (response.isSuccessful()) {                        //将服务器响应的参数response.body().string())发送到hanlder中,并更新ui                        mHandler.obtainMessage(1, response.body().string()).sendToTarget();                    } else {                        throw new IOException("Unexpected code:" + response);                    }                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }}

下面试布局代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.lushuai.testregister.RegisterActivity">    <EditText        android:id="@+id/name"        android:layout_width="match_parent"        android:layout_height="40dp"        android:hint="账号"/>    <EditText        android:id="@+id/pwd"        android:layout_width="match_parent"        android:layout_height="40dp"        android:hint="密码"/>      </LinearLayout>



阅读全文
0 0
原创粉丝点击