【Android】 使用okhttp实现注册登录功能(与服务器端)
16lz
2021-01-26
我先贴上我们服务器端注册相关的说明:
请求方式: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 Listlist; 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(); }}
下面试布局代码
更多相关文章
- android网络通信
- “亲子安全卫士”项目总结
- Android的super.onCreate
- 实现在Android简单封装类似JQuery异步请求
- #android#数据持久化--SharedPreferences存储
- Android(安卓)用KSOAP2 调用 webservice 传入参数服务器接受不到
- rxjava2+okhttp3+retrofit2(请求参数按照参数键值从小到大先后顺
- Android笔记---使用HttpClient发送POST和GET请求
- 关于LayoutInflate和View-infalte的参数意义以及区别总结