Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo
来源:互联网 发布:win10怎么连接usb网络 编辑:程序博客网 时间:2024/05/17 23:51
Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录的demo
由于这是本人第一次写博客,所以有很多的不足希望大家能指正。
这个demo是客户端加服务端组成,数据库用的是mysql。
客户端
使用rxjava2+retrofit2+dagger2+mvp写的
- rxjava2: 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库(说到根上,它就是一个实现异步操作的库)
- retrofit2: 类型安全的网络库,封装了okhttp
- dagger2: Dagger2是Dagger1的分支,由谷歌公司接手开发,目前的版本是2.0
这里我就不多作介绍,如果大家有不了解的地方可以自己去百度看一看,dagger可以看这里,因为我自己也不是很懂,等我自己弄懂了,可以来写一篇这方面的博客
api接口
/** * Created by long on 17-4-5. * API接口 */public interface IBaseApi { /** * 用户注册 * eg:http://localhost:8080/web/Register * @param user 用户名 * @param pass 密码 * @return */ @Headers(CACHE_CONTROL_NETWORK) @POST("Register") Observable<BaseInfo> register(@Query("user") String user, @Query("pass") String pass); /** * 用户登录 * eg:http://localhost:8080/web/Login * @param user 用户名 * @param pass 密码 * @return */ @Headers(CACHE_CONTROL_NETWORK) @POST("Login") Observable<BaseInfo> login(@Query("user") String user, @Query("pass") String pass); /** * 获取手机短信验证码 * eg:http://localhost:8080/web/GetCheckCode * @param phone 手机号 * @return */ @Headers(CACHE_CONTROL_NETWORK) @POST("GetCheckCode") Observable<BaseInfo> getCheckCode(@Query("phone") String phone); /** * 验证用户输入的验证码是否正确 * eg:http://localhost:8080/web/VerifyCheckCode * @param checkCode * @return */ @Headers(CACHE_CONTROL_NETWORK) @POST("VerifyCheckCode") Observable<BaseInfo> verifyCheckCode(@Query("code") String checkCode);}
这里面注释已经写的很详细了,我就不多作解释了。
初始化网络通信服务
然后使用rxjava2和retrofit2初始化api接口,这里我只贴其中的重点,其余的大家可以看详细代码
/** * 初始化网络通信服务 */ public static void init() { // 指定缓存路径,缓存大小100Mb Cache cache = new Cache(new File(App.app.getCacheDir(), "HttpCache"), 1024 * 1024 * 100); OkHttpClient okHttpClient = new OkHttpClient.Builder().cache(cache) .retryOnConnectionFailure(true) .addInterceptor(sLoggingInterceptor) .addInterceptor(sRewriteCacheControlInterceptor) .addNetworkInterceptor(sRewriteCacheControlInterceptor) .connectTimeout(10, TimeUnit.SECONDS) .build(); Retrofit retrofit = new Retrofit.Builder() .client(okHttpClient) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .baseUrl(BASEURL) .build(); baseApi = retrofit.create(IBaseApi.class); }
其余的我就不多说了,我贴几张图吧。
这个UI是我仿照的bilibili的UI。如果有侵犯到什么,请联系我修改。
服务端
服务端我是用java ee写的
功能:完成了一个最基本的登录和注册流程
数据库相关介绍
- 数据库名为Login,表名为user,3个字段,user_id,user_name,user_pwd。user_id为主键。当然你也可不按照我的方式建立数据库,但是你得修改服务端里面的代码。
- 集成环境: linux下的tomcat服务器
- 数据传输类型:json
里面的代码我就不都贴了,我就贴一个发送手机验证码的代码吧。
public class DaYuService { public static boolean requestSmsCode(String phone) { Gson gson = new Gson(); boolean flag = false; // 服务url String url = "http://gw.api.taobao.com/router/rest"; // appkey String appkey = "23567754"; // secret String secret = "d02bd556928889a88b811aa28a9ec5c7"; // 生成随机的6位数字 String code = RandomUtil.createRandomVcode(); TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret); AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest(); req.setExtend("1"); req.setSmsType("normal"); req.setSmsFreeSignName("爱生活爱龙哥"); req.setSmsParamString("{number:'" + code + " '}"); req.setRecNum(phone); req.setSmsTemplateCode("SMS_60130168"); AlibabaAliqinFcSmsNumSendResponse rsp = null; try { rsp = client.execute(req); UserSms userSms = UserSms.getInstance(); userSms.setPhone(phone); userSms.setCode(code); userSms.setTime(new Date()); Root root = gson.fromJson(rsp.getBody(), Root.class); flag = root.getAlibaba_aliqin_fc_sms_num_send_response().getResult().getSuccess(); System.out.println(rsp.getBody()); } catch (ApiException e) { e.printStackTrace(); } if (flag) { return true; } else { return false; } }}
这个类是我通过阿里大鱼的平台给手机发送验证码,是可以直接向手机发送验证码的。当然如果大家有需要,可以去阿里大于上面自己注册一个账号捣鼓捣鼓,有任何问题都可以和我交流。
由于这是我第一次写博客,所以还有很多的不足,另外有什么不明白的,可以和我交流,我一般时间都在。
我的QQ:849343227
代码下载
注意:客户端项目中的mvp module才是使用了dagger2的
客户端源代码地址:https://github.com/chen849343227/login
服务端源代码下载地址:https://github.com/chen849343227/login_javaee
2 0
- Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo
- Android详细的登录注册功能MVP+Rxjava2.0+Retrofit2.0相结合的实战篇章
- MVP+Dagger2+Retrofit2+Rxjava搭建的一个电影相关的Demo
- 按照Google官方MVP+RxJava+Retrofit2+Dagger2的Demo自己另做一个,进行讲解。
- Mvp+RxJava2+Retrofit2 搭建一个属于自己的开发框架
- Mvp+RxJava2+Retrofit2 搭建一个属于自己的开发框架
- RxJava2 + Retrofit2 + Mvp + Dagger2框架搭建
- Mvp+Retrofit2+RxJava2 项目中使用的简洁封装
- Mvp+Retrofit2+RxJava2 项目中使用的简洁封装
- android之dagger2+rxjava+retrofit2+mvp架构的结合
- 清晰的MVP-封装 Retrofit2+Rxjava+Lamda+dagger2(可直接使用)
- RxJava2+Retrofit2+MVP+lamdba仿微信朋友圈Demo
- 最近很火的MVP+Retrofit2+rxjava+Dagger2框架 -- MVP
- Android使用Retrofit2+RxJava2+MVP封装实现购物车
- 简易Mvp+RxJava2+Retrofit2 搭建一个属于自己的开发框架
- 【Android高级】RxJava2.0和Retrofit2.0的使用探究
- Android 优雅的让RxJava2.0+Retrofit2.0结合使用
- Android 优雅的让RxJava2.0+Retrofit2.0结合使用
- Android编程权威指南之使用RecyclerView显示列表
- 第39级台阶
- WebBroker 后端输出页面到浏览器,让浏览器做 URL 跳转
- 代码整洁之道精华——第十一章 系统
- ORA-00257: archiver error. Connect internal only, until freed.处理办法(亲测可行)
- Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo
- float数值update逼近目标数值算法
- ArcGIS插件开发中跨窗体数据访问( AddIn.FromID)
- 李宏毅机器学习课程笔记3:Backpropagation、"Hello world" of Deep Learning、Tips for Training DNN
- 【新手经验分享】有关MYSQL和JDBC应用中的一些问题整合
- 二十一 Swift3.0之 闭包捕获值
- tomcat7-maven-plugin 配置
- UTF-8, Unicode, GB2312格式串转换之C语言版
- 反射基础