简单注册登录请求

来源:互联网 发布:政府数据库 编辑:程序博客网 时间:2024/05/16 06:43
//封装okhttppublic interface OnNetListener<T> {    public void onSuccess(T t);    public void onFailure(Exception e);}public interface Api {    public static boolean ISONLINE = true;    public static String DEV = "http://169.27.23.105";    public static String ONLINE = "http://120.27.23.105";    public static String HOST = ISONLINE ? ONLINE : DEV;    public static String Login = HOST + "/user/login";    public static String REGISTER = HOST + "/user/reg";}import java.util.Map;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;public class OkHttpUtils {    private static OkHttpUtils okHttpUtils;    private final OkHttpClient client;    private OkHttpUtils() {        client = new OkHttpClient.Builder().build();    }    public static OkHttpUtils getOkHttpUtils() {        if (okHttpUtils == null) {            synchronized (OkHttpUtils.class) {                if (okHttpUtils == null) {                    okHttpUtils = new OkHttpUtils();                }            }        }        return okHttpUtils;    }    /**     * GET请求     *     * @param url     * @param callback     */    public void doGet(String url, Callback callback) {        Request request = new Request.Builder().url(url).build();        client.newCall(request).enqueue(callback);    }    /**     * POST请求     *     * @param url     * @param params     * @param callback     */    public void doPost(String url, Map<String, String> params, Callback callback) {        if (params == null) {            throw new RuntimeException("参数为空了");        }        FormBody.Builder builder = new FormBody.Builder();        for (Map.Entry<String, String> entry : params.entrySet()) {            builder.add(entry.getKey(), entry.getValue());        }        FormBody formBody = builder.build();        Request request = new Request.Builder().url(url).post(formBody).build();        client.newCall(request).enqueue(callback);    }}
//V层接口public interface IMainActivity {    public String getAccout();    public String getPwd();    public void GoLogin();    public void show(String str);}//p层import java.util.HashMap;import bwie.com.a1510dproject.RegisterBean;import bwie.com.a1510dproject.model.IRegisterModel;import bwie.com.a1510dproject.model.RegisterModel;import bwie.com.a1510dproject.net.OnNetListener;import bwie.com.a1510dproject.view.IMainActivity;public class RegisterPresenter {    private IMainActivity mainActivity;    private IRegisterModel iRegisterModel;    public RegisterPresenter(IMainActivity mainActivity) {        this.mainActivity = mainActivity;        iRegisterModel = new RegisterModel();    }    public void dettach() {        mainActivity = null;    }    public void register() {        //调用View层的方法,去获取账号密码        String accout = mainActivity.getAccout();        String pwd = mainActivity.getPwd();        HashMap<String, String> params = new HashMap<>();        params.put("mobile", accout);        params.put("password", pwd);        iRegisterModel.register(params, new OnNetListener<RegisterBean>() {            @Override            public void onSuccess(RegisterBean registerBean) {                mainActivity.show(registerBean.getMsg());                mainActivity.GoLogin();            }            @Override            public void onFailure(Exception e) {            }        });    }}//M层//接口public interface IRegisterModel {    public void register(Map<String, String> params, final OnNetListener<RegisterBean> onNetListener);}import android.os.Handler;import android.os.Looper;import android.util.Log;import com.google.gson.Gson;import java.io.IOException;import java.util.Map;import bwie.com.a1510dproject.RegisterBean;import bwie.com.a1510dproject.net.Api;import bwie.com.a1510dproject.net.OkHttpUtils;import bwie.com.a1510dproject.net.OnNetListener;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;public class RegisterModel implements IRegisterModel {    private Handler handler = new Handler(Looper.myLooper());    /**     * 真正的网络请求,去注册     */    @Override    public void register(Map<String, String> params, final OnNetListener<RegisterBean> onNetListener) {        OkHttpUtils.getOkHttpUtils().doPost(Api.REGISTER, params, new Callback() {            @Override            public void onFailure(Call call, final IOException e) {                handler.post(new Runnable() {                    @Override                    public void run() {                        onNetListener.onFailure(e);                    }                });            }            @Override            public void onResponse(Call call, Response response) throws IOException {                final String string = response.body().string();                Log.e("RegisterModel", string);                //把数据返回到主线程进行处理                handler.post(new Runnable() {                    @Override                    public void run() {                        RegisterBean registerBean = new Gson().fromJson(string, RegisterBean.class);                        onNetListener.onSuccess(registerBean);                    }                });            }        });    }}

//一个登录activity   一个注册//登录布局 <EditText        android:id="@+id/etAccout"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="输入账号" />    <EditText        android:id="@+id/etPwd"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:hint="输入密码" />    <Button        android:id="@+id/bt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="注册" />

//Main界面import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import bwie.com.a1510dproject.R;import bwie.com.a1510dproject.presenter.RegisterPresenter;public class MainActivity extends AppCompatActivity implements View.OnClickListener, IMainActivity {    /**     * 开始请求     */    private Button mBt;    /**     * 输入账号     */    private EditText mEtAccout;    /**     * 输入密码     */    private EditText mEtPwd;    private RegisterPresenter registerPresenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        registerPresenter = new RegisterPresenter(this);    }    private void initView() {        mBt = (Button) findViewById(R.id.bt);        mBt.setOnClickListener(this);        mEtAccout = (EditText) findViewById(R.id.etAccout);        mEtPwd = (EditText) findViewById(R.id.etPwd);    }    @Override    protected void onDestroy() {        super.onDestroy();        registerPresenter.dettach();    }    @Override    public void onClick(View v) {        switch (v.getId()) {            default:                break;            case R.id.bt:                //注册                registerPresenter.register();                break;        }    }    public String getAccout() {        return mEtAccout.getText().toString().trim();    }    public String getPwd() {        return mEtPwd.getText().toString().trim();    }    public void GoLogin() {        Intent intent = new Intent(MainActivity.this, LoginActivity.class);        startActivity(intent);    }    public void show(String str) {        Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();    }}

//注册布局<TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="登陆" />public class LoginActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_login);    }}

//需要添加的依赖 compile 'com.squareup.okhttp3:okhttp:3.9.0'    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'    compile 'com.google.code.gson:gson:2.4'