OKHttp+MVP 注册登录

application包
 
 

public class Constant {

public static final String BASE_URL= "https://www.zhaoapi.cn/" ; }
model 包下 bean 包
 
 

public class ReturnBean {

/** * msg : 天呢!用户名或密码不能为空 * code : 1 * data : {} */ private String msg ; private String code ; public String getMsg() { return msg ; } public void setMsg(String msg) { this. msg = msg ; } public String getCode() { return code ; } public void setCode(String code) { this. code = code ; } }
 model包下 https包
 
 

public class HttpUitl implements Callback{

private static HttpUitl INSTANCE ; private final OkHttpClient okHttpClient ; private HttpUtilsCallback mHttpUtilsCallback ; private HttpUitl(){ okHttpClient = new OkHttpClient.Builder().build() ; } public static HttpUitl getInstance(){ if( INSTANCE == null){ INSTANCE = new HttpUitl() ; } return INSTANCE ; } public static final MediaType JSON = MediaType. parse( "application/json; charset=utf-8") ; public String doGet(String path) { Request request = new Request.Builder().url(Constant. BASE_URL + path).build() ; Call call = okHttpClient.newCall(request) ; call.enqueue( this) ; return "data ok" ; } public void doPost(String path , HashMap<String ,String> map , HttpUtilsCallback httpUtilsCallback) { //String url = "https://www.zhaoapi.cn/product/searchProducts"; this. mHttpUtilsCallback = httpUtilsCallback ; FormBody.Builder builder = new FormBody.Builder() ; Iterator<String> iterator = map.keySet().iterator() ; while (iterator.hasNext()) { String key = iterator.next() ; String value = map.get(key) ; builder.add(key , value) ; } FormBody formBody = builder.build() ; Request request = new Request.Builder() .url(Constant. BASE_URL + path) .post(formBody) .build() ; Call call = okHttpClient.newCall(request) ; call.enqueue( this) ; } @Override public void onFailure(Call call , IOException e) { } @Override public void onResponse(Call call , Response response) throws IOException { String string = response.body().string() ; mHttpUtilsCallback.onSuccess(string) ; } }
 model包下 HttpUtilsCallback 包
 
 

public interface HttpUtilsCallback {

void onSuccess(String str) ; void onFail( int errCode ,String errMsg) ; }
 pressenter 包下
 
 

public class BasePerssenter<V extends IBaseView>{

public V mIbaseView ; public void attacheView( V ibaseView){ this. mIbaseView=ibaseView ; } public V getView(){ return mIbaseView ; } public void detachView(){ mIbaseView= null; } }
 
 
 
 

public class LoginPerssenter extends BasePerssenter<ILoginView>{

private final HttpUitl httpUitl ; //public Context context public LoginPerssenter() { httpUitl = HttpUitl. getInstance() ; } public void login(String path , HashMap<String , String> hashMap){ httpUitl.doPost(path , hashMap , new HttpUtilsCallback(){ @Override public void onSuccess(String str) { Log. e( "my" , "=="+str) ; Looper. prepare() ; ILoginView view = getView() ; Gson gson = new Gson() ; ReturnBean returnBean = gson.fromJson(str , ReturnBean. class) ; String code = returnBean.getCode() ; String msg = returnBean.getMsg() ; if(code.equals( "1")){ Toast. makeText((Context)view , ""+msg , Toast. LENGTH_SHORT).show() ; } else{ Intent intent = new Intent((Context)view , HomePagerActivity. class) ; ((Context)view).startActivity(intent) ; } Looper. loop() ; } @Override public void onFail( int errCode , String errMsg) { } }) ; } }
 
 
 
 

public class MainPerssenter extends BasePerssenter<IMainView> {

private final HttpUitl httpUitl ; //public Context context public MainPerssenter() { httpUitl = HttpUitl. getInstance() ; } public void register(String path , HashMap<String , String> hashMap) { httpUitl.doPost(path , hashMap , new HttpUtilsCallback() { @Override public void onSuccess(String str) { Log. e( "myMessage" , "== "+str) ; Looper. prepare() ; IMainView view = getView() ; Gson gson = new Gson() ; ReturnBean returnBean = gson.fromJson(str , ReturnBean. class) ; String code = returnBean.getCode() ; String msg = returnBean.getMsg() ; if(code.equals( "1")){ Toast. makeText((Context)view , ""+msg , Toast. LENGTH_SHORT).show() ; // return; } else{ Intent intent = new Intent((Context)view , LoginActivity. class) ; ((Context)view).startActivity(intent) ; } Looper. loop() ; } @Override public void onFail( int errCode , String errMsg) { } }) ; } public void login(){ IMainView view = getView() ; Intent intent = new Intent((Context)view , LoginActivity. class) ; ((Context)view).startActivity(intent) ; } }
Utils 包下
 
 

public class CommonUtil {

public static boolean isMobileNO(String mobiles){ Pattern p = Pattern. compile( "^((13[0-9])|(15[^4, \\ D])|(18[0,5-9])) \\ d{8}$") ; Matcher m = p.matcher(mobiles) ; System. out.println(m.matches()+ "---") ; return m.matches() ; } }
View 包下 activitys 包
 
 

public abstract class BaseActivity<P extends BasePerssenter> extends AppCompatActivity implements IBaseView{

public P presenter ; @Override protected void onCreate( @Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState) ; // TApplication.getInstance().addActivity(this); setContentView(setChildContentView()) ; initView() ; initBaseData() ; initData() ; } protected abstract void initData() ; protected abstract void initView() ; private void initBaseData() { presenter=setPresenter() ; if( presenter!= null){ presenter.attacheView( this) ; } else{ try { throw new Exception( "出错了") ; } catch (Exception e) { e.printStackTrace() ; } } } protected abstract P setPresenter() ; abstract int setChildContentView() ; }

 
 

public class LoginActivity extends BaseActivity<LoginPerssenter> implements ILoginView,View.OnClickListener{

private EditText login_name ; private EditText login_password ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState) ; // setContentView(R.layout.activity_login); } @Override protected void initData() { } @Override protected void initView() { login_name = findViewById(R.id. login_name) ; login_password = findViewById(R.id. login_password) ; findViewById(R.id. login_sure).setOnClickListener( this) ; } @Override protected LoginPerssenter setPresenter() { return new LoginPerssenter() ; } @Override int setChildContentView() { return R.layout. activity_login ; } @Override public void onClick(View view) { switch (view.getId()){ case R.id. login_sure: String name = login_name.getText().toString() ; String passwrd = login_password.getText().toString() ; if(!CommonUtil. isMobileNO(name)){ Toast. makeText(LoginActivity. this,getResources().getString(R.string. wrong_mobile_num) ,Toast. LENGTH_SHORT).show() ; return; } if(passwrd== null||passwrd== ""){ Toast. makeText(LoginActivity. this,getResources().getString(R.string. wrong_password) ,Toast. LENGTH_SHORT).show() ; return; } if( presenter != null) { String path = "user/login" ; HashMap<String ,String> hashMap = new HashMap<>() ; hashMap.put( "mobile" ,name) ; hashMap.put( "password" ,passwrd) ; presenter.login(path ,hashMap) ; } break; } } @Override public void onSuccess(String str) { Log. e( "myMessage" , ""+str) ; } @Override protected void onDestroy() { super.onDestroy() ; presenter.detachView() ; } }

 
 

public class MainActivity extends BaseActivity<MainPerssenter> implements IMainView,View.OnClickListener{

private EditText password ; private EditText mobile ; private EditText password_sure ; @Override protected void onCreate( @Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState) ; // setContentView(R.layout.activity_main); } @Override public void onSuccess(String str) { Log. e( "myMessage" , ""+str) ; } @Override protected void initData() { // presenter.loadDataFromServer(); } @Override protected void initView() { password = findViewById(R.id. password) ; mobile = findViewById(R.id. mobile) ; password_sure = findViewById(R.id. password_sure) ; findViewById(R.id. register).setOnClickListener( this) ; findViewById(R.id. login).setOnClickListener( this) ; } @Override protected MainPerssenter setPresenter() { return new MainPerssenter() ; } @Override int setChildContentView() { return R.layout. activity_main ; } @Override protected void onDestroy() { super.onDestroy() ; presenter.detachView() ; } @Override public void onClick(View view) { switch (view.getId()){ case R.id. register: String phoneNum = mobile.getText().toString() ; String passwrd = password.getText().toString() ; String passwrd_sure = password_sure.getText().toString() ; if(!CommonUtil. isMobileNO(phoneNum)){ Toast. makeText(MainActivity. this,getResources().getString(R.string. wrong_mobile_num) ,Toast. LENGTH_SHORT).show() ; return; } if(passwrd== null||passwrd== ""){ Toast. makeText(MainActivity. this,getResources().getString(R.string. wrong_password) ,Toast. LENGTH_SHORT).show() ; return; } if(!passwrd.equals(passwrd_sure)){ Toast. makeText(MainActivity. this,getResources().getString(R.string. wrong_password_diff) ,Toast. LENGTH_SHORT).show() ; return; } if( presenter != null) { String path = "user/reg" ; HashMap<String ,String> hashMap = new HashMap<>() ; hashMap.put( "mobile" ,phoneNum) ; hashMap.put( "password" ,passwrd) ; presenter.register(path ,hashMap) ; } break; case R.id. login: presenter.login() ; } } }

view包下  interfaces 包

 
 

public interface IBaseView {

}
 
 

public interface ILoginView extends IBaseView{

public void onSuccess(String str) ; }
 
 

public interface IMainView extends IBaseView {

public void onSuccess(String str) ; // void onS(TextBean testBean, boolean needClear); }

猜你喜欢

转载自blog.csdn.net/zyanna/article/details/80039284