请求方式: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;
- }
- }
- 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>