简单登录 MVP

来源:互联网 发布:淘宝直播预告已过期 编辑:程序博客网 时间:2024/06/05 08:04
//请求工具类 
package com.example.okhttp.http;import android.util.Log;import java.io.IOException;import java.util.Map;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class OkHttpUtils {    private static final String TAG = "OkHttpUtils";    //单例模式    private static  volatile OkHttpUtils instance;    private final OkHttpClient client;    private OkHttpUtils(){       //初始化出来        client = new OkHttpClient();     }     public static  OkHttpUtils getInstance(){         if (instance==null){             synchronized (OkHttpUtils.class){                 if (null==instance){                     instance=new OkHttpUtils();                 }             }         }         return  instance;     }     //定义,方法    public void get(String url, Map<String,String> map, final ResultCallBack resultCallBack){       //拼接        StringBuffer sb = new StringBuffer();        sb.append(url).append("?");        for (Map.Entry<String,String> entry:map.entrySet()){            sb.append(entry.getKey())                    .append("=")                    .append(entry.getValue())                    .append("&");        }        sb.deleteCharAt(sb.lastIndexOf("&"));        Log.i(TAG,"URL"+sb);        Request request=new Request.Builder()                .get()                .url(sb.toString())                .build();        Call call = client.newCall(request);        call.enqueue(new Callback() {            @Override//请求失败的回调方法            public void onFailure(Call call, IOException e) {                resultCallBack.onFailed(e.getMessage());            }            @Override//请求成功的回调方法            public void onResponse(Call call, Response response) throws IOException {                //需要我们自己的                String request = response.body().string();                resultCallBack.onSuccess(request);            }        });    }}
//m层创建的接口
package com.example.okhttp.http;public interface ResultCallBack {    void onSuccess(String message);    void onFailed(String error);}

//MainActivity   View层 
package com.example.okhttp;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import com.example.okhttp.callback.IView;import com.example.okhttp.persenter.LoginPresenter;public class MainActivity extends AppCompatActivity implements View.OnClickListener,IView {    private static final String TAG = "MainActivity";    private EditText etUserName;    private EditText etPassword;    private Button btnLogin;    private LoginPresenter persenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        etUserName =(EditText)findViewById(R.id.et_username);        etPassword =(EditText)findViewById(R.id.et_password);        btnLogin =(Button)findViewById(R.id.btn_login);        //pceng 对象        persenter = new LoginPresenter();        persenter.attachView(this);        btnLogin.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()){            case R.id.btn_login:                String username=etUserName.getText().toString().trim();                String password=etPassword.getText().toString().trim();                persenter.login(username,password);                break;        }    }    //ivaiew的方法接口    @Override    public void success(String message) {        Log.i(TAG,"success"+message);    }    @Override    public void failed(String message) {        Log.i(TAG,"failed"+message);    }}

//View层的 接口
package com.example.okhttp.callback;public interface IView {    void success(String message);    void failed (String message);}

//presener层的过渡层
package com.example.okhttp.persenter;import com.example.okhttp.callback.IView;import com.example.okhttp.http.OkHttpUtils;import com.example.okhttp.http.ResultCallBack;import java.util.HashMap;import java.util.Map;/** * Created by  on 2017/11/7. */public class LoginPresenter {    private IView iv;    public void attachView(IView iv){       this.iv=iv;    }    //登录的方法    public void login(String username,String password){        //封装参数        Map<String,String> map=new HashMap<>();        map.put("mobile",username);        map.put("password",password);        OkHttpUtils.getInstance().get("http://120.27.23.105/user/login", map, new ResultCallBack() {            @Override            public void onSuccess(String message) {                  iv.success(message);            }            @Override            public void onFailed(String error) {                  iv.failed(error);            }        });    }}