Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo

Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo

客户端

/**
 * 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 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 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 getCheckCode(@Query("phone") String phone);

    /**
     * 验证用户输入的验证码是否正确
     * eg:http://localhost:8080/web/VerifyCheckCode
     * @param checkCode
     * @return
     */
    @Headers(CACHE_CONTROL_NETWORK)
    @POST("VerifyCheckCode")
    Observable 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;     } 

其余的我就不多说了,我贴几张图吧。
Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo_第1张图片
Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo_第2张图片

这个UI是我仿照的bilibili的UI。如果有侵犯到什么,请联系我修改。

服务端

服务端我是用java写的
功能:完成了一个最基本的登录和注册流程

数据库相关介绍

  • 数据库名为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 = "xxxxxxxx";
        // 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
项目都在我的github上,
客户端代码
服务端代码

你可能感兴趣的:(Android 使用MVP Rxjava2+Retrofit2+Dagger2写的一个登录注册(含后台+数据库)的demo)