MVP模式登录(OKHTTP请求数据)
来源:互联网 发布:java获取 d参数 编辑:程序博客网 时间:2024/04/27 16:56
一:使用前导入依赖
二:需要的权限
三:View层
------------------MainActivity
package com.bwie.skn.simplemvpdeom;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.Toast;import com.bwie.skn.simplemvpdeom.presenter.LoginPresenter;import com.bwie.skn.simplemvpdeom.view.LoginView;public class MainActivity extends AppCompatActivity implements LoginView { private EditText etName; private EditText etPassword; private LoginPresenter loginPresenter; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化属性 etName = (EditText) findViewById(R.id.etName); etPassword = (EditText) findViewById(R.id.etPassword); progressBar = (ProgressBar) findViewById(R.id.loginBar); //login登录 loginPresenter = new LoginPresenter(MainActivity.this); } public void btnLogin(View view){ loginPresenter.verifyUserInfo(etName.getText().toString(),etPassword.getText().toString()); } @Override public void showProgress() { progressBar.setVisibility(View.VISIBLE); } @Override public void hindProgress() { progressBar.setVisibility(View.GONE); } @Override public void setUserNameError() { etName.setError("用户不能为空"); progressBar.setVisibility(View.GONE); } @Override public void setUserPasswordError() { etPassword.setError("密码不能为空"); progressBar.setVisibility(View.GONE); } @Override public void navigationToHome() { Toast.makeText(this,"登录成功",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this, ListViewAdapter.class); startActivity(intent); finish(); }}
------------------接口LoginView
package com.bwie.skn.simplemvpdeom.view;/** * author:Created by WangZhiQiang on 2017/12/5. */public interface LoginView { //显示进度条 void showProgress(); //隐藏进度条 void hindProgress(); //处理用户的输入框的情况 void setUserNameError(); void setUserPasswordError(); //导航栏 void navigationToHome();}
2.--------------presenter层
package com.bwie.skn.simplemvpdeom.presenter;import com.bwie.skn.simplemvpdeom.model.LoginModel;import com.bwie.skn.simplemvpdeom.view.LoginView;/** * author:Created by WangZhiQiang on 2017/12/5. */public class LoginPresenter implements OnLoginFinishListener{ private LoginView loginView; private final LoginModel loginModel; public LoginPresenter(LoginView loginView){ this.loginView = loginView; loginModel = new LoginModel(); } public void verifyUserInfo(String username,String userpassword){ if (null != loginView ){ loginView.showProgress(); } //向服务器中发送请求 loginModel.verifyUserInfo(username,userpassword,this); } @Override public void setUserNameError() { loginView.setUserNameError(); } @Override public void setUserPasswordErrpr() { loginView.setUserPasswordError(); } @Override public void onSuccess() { loginView.hindProgress(); //跳到主页 loginView.navigationToHome(); } @Override public void onFailed() { loginView.hindProgress(); }}
---------------------p接口
package com.bwie.skn.simplemvpdeom.presenter;/** * author:Created by WangZhiQiang on 2017/12/5. */public interface OnLoginFinishListener { //处理用户的输入框的情况 void setUserNameError(); void setUserPasswordErrpr(); void onSuccess(); void onFailed();}
3.-----------M层package com.bwie.skn.simplemvpdeom.model;import android.text.TextUtils;import android.util.Log;import com.bwie.skn.simplemvpdeom.utils.LoginCallBack;import com.bwie.skn.simplemvpdeom.presenter.OnLoginFinishListener;import com.bwie.skn.simplemvpdeom.utils.Constant;import com.bwie.skn.simplemvpdeom.utils.OKHttpUtils;import org.json.JSONException;import org.json.JSONObject;import java.util.HashMap;/** * author:Created by WangZhiQiang on 2017/12/5. */public class LoginModel { public void verifyUserInfo(String username, String userpassword, final OnLoginFinishListener onLoginFinishListener){ if (TextUtils.isEmpty(username)){ onLoginFinishListener.setUserNameError(); return; } if (TextUtils.isEmpty(userpassword)){ onLoginFinishListener.setUserPasswordErrpr(); return; } //添加请求参数 HashMap<String, String> map = new HashMap<>(); map.put("mobile",username); map.put("password",userpassword); //调用olHttpUtils工具类中的方法 OKHttpUtils.getInstance().doGet(Constant.LOGIN, map, new LoginCallBack() { @Override public void onSuccess(String msg) { //解析JSON try { JSONObject jobj = new JSONObject(msg); String result = jobj.getString("msg"); Log.e("SKN","M++"+result); if (result.trim().equals("登录成功")){ Log.e("SKN","M登录成功"); onLoginFinishListener.onSuccess(); }else{ onLoginFinishListener.onFailed(); Log.e("SKN","M登录失败"); } } catch (JSONException e) { e.printStackTrace(); } } @Override public void onFailed(String msg) { onLoginFinishListener.onFailed(); } }); }}
-----------Util-M接口--------------Utils---OK封装package com.bwie.skn.simplemvpdeom.model;/** * author:Created by WangZhiQiang on 2017/12/5. */public interface LoginCallBack { void onSuccess(String msg); void onFailed(String msg);}package com.bwie.skn.simplemvpdeom.utils;import android.os.Handler;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;/** * author:Created by WangZhiQiang on 2017/12/5. */public class OKHttpUtils { private static OKHttpUtils okHttpUtils; private static Handler handler = new Handler(); //私有化构造方法 private OKHttpUtils(){ } /** * 获取OKhttpClient实例化 */ public static OKHttpUtils getInstance(){ if(null == okHttpUtils){ synchronized (OKHttpUtils.class){ if (null == okHttpUtils){ okHttpUtils = new OKHttpUtils(); } } } return okHttpUtils; } /** * 封装的异步Get请求 */ public void doGet(String path, Map<String,String>map, final LoginCallBack loginCallBack){ //创建一个字符串容器 StringBuilder sb = null; for (String key:map.keySet()){ if (null == sb){ sb = new StringBuilder(); sb.append("?"); }else{ sb.append("&"); } sb.append(key).append("=").append(map.get(key)); } Request request = new Request.Builder() .url(path+sb.toString()) .get() .build(); //OKHttp 网络 OkHttpClient okHttpClient = new OkHttpClient(); Call call = okHttpClient.newCall(request); //异步请求 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { //请求失败 loginCallBack.onFailed(e.getMessage()); Log.e("SKN","OK请求失败"); } @Override public void onResponse(Call call, final Response response) throws IOException { //请求成功 handler.post(new Runnable() { @Override public void run() { try { loginCallBack.onSuccess(response.body().string()); Log.e("SKN","OK请求成功"); } catch (IOException e) { e.printStackTrace(); } } }); } }); }}
----------------网络路径封装Constant
package com.bwie.skn.simplemvpdeom.utils;/** * author:Created by WangZhiQiang on 2017/12/5. */public class Constant { private static final String HOST = "http://120.27.23.105/"; public static final String LOGIN = HOST+"user/login";}
---------------从网络读取package com.bwie.skn.simplemvpdeom.utils;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;/** * author:Created by WangZhiQiang on 2017/12/5. */public class StreamTools { public static String readFromNetWork(InputStream is){ try { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len=is.read(buffer))!=-1){ byteArrayOutputStream.write(buffer,0,len); } } catch (IOException e) { e.printStackTrace(); } return null; }}**********Gson单利模式
public class GsonUtils { private static Gson gson; public static Gson getInstance(){ if(gson==null){ gson=new Gson(); } return gson; }}
阅读全文
0 0
- MVP模式登录(OKHTTP请求数据)
- MVP模式+OKhttp的封装请求数据
- MVP模式OKhttp请求RecyclerView展示数据
- OkHttp+MVP请求数据
- MVP注册登录+OkHttp网络请求+展示数据
- okhttp登录 注册 请求数据
- MVP-简单的OkHttp网络请求数据
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- 简单MVP框架(OKHTTP请求数据)
- mvp(okhttp)请求图片与数据
- mvp(okhttp)图片与数据请求
- Android--------在Fragment中通过MVP模式用Okhttp进行数据请求
- MVP模式的OKhttp请求网络数据,xrecyclerview上拉刷新,下拉加载
- MVP模式请求网络数据
- MVP架构分包+OkHttp网络请求+RecyclerView展示数据
- MVP和Retrofit+Rxjava+OkHttp封装结合请求数据
- MVP+OKHttp 用户登录demo
- Mvp框架+okhttp请求+recyclerview
- 第12期《大风起兮云飞扬》12月刊
- KDnuggets:未来4至10年内对数据科学家的需求将开始减少
- 大咖|第四范式蒋仁皓:什么才是构建企业AI的关键要素
- AI大事件 | 人工智能检测自杀倾向,三星收购AI公司
- 【Scikit-Learn 中文文档】随机投影
- MVP模式登录(OKHTTP请求数据)
- 【Scikit-Learn 中文文档】内核近似
- PS笔记 -- 混合模式
- 6个月清洗近千亿条微信支付交易记录,他们要搞什么大事情?
- linux下so动态库一些不为人知的秘密(中)
- 提高代码可读性的10个技巧
- kafka 常用命令
- 【Scikit-Learn 中文文档】成对的矩阵, 类别和核函数
- 微信已经老了,头条永远年轻