Retrofit+RxJava+Okhttp简单实现登录注册

首先导入依赖:

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包
compile 'com.facebook.fresco:fresco:0.11.0'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'

1、API

public interface Api {
    public static String HOST = "http://120.27.23.105/user/";


}

2、ServiceApi

public interface ServiceSApi {
    //登录
    @GET("{login}")
    Flowable<LoginBean> getLogin(@Path("login") String login, @Query("mobile") String mob,@Query("password") String pw);
    //注册
    @GET("{reg}")
    Flowable<RegisterBean> getReg(@Path("reg") String login,@Query("mobile")String mob,@Query("password")String pw);
    //个人详情
    @GET("{getUserInfo}")
    Flowable<UserBean> getUser(@Path("getUserInfo") String login,@Query("uid")String id);

}

3、对Retrofit的封装:

public class RetrofitHelper {
        private static OkHttpClient client;
    private static ServiceSApi serviceAPI;
    static {
        getClient();
    }
    public static OkHttpClient getClient(){
        if (client==null){
            synchronized (OkHttpClient.class){
                if (client==null){
                    client=new OkHttpClient();
                }
            }
        }return client;
    }
    public static ServiceSApi getServiceAPI(){
        if(serviceAPI==null){
            synchronized (ServiceSApi.class){
                if(serviceAPI==null){
                    serviceAPI=onCreate(ServiceSApi.class,Api.HOST);
                }
            }
        }
        return serviceAPI;
    }
    public static <T> T onCreate(Class<T> tclass,String  url) {
        Retrofit build = new Retrofit.Builder()
                .baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .client(client)
                .build();
        return build.create(tclass);

    }

}


4、分别封装3个接口的Bean类

5、主页面  登录  MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {


    /**
     * 请输入手机号
     */
    private EditText mPhone;
    /**
     * 请输入密码
     */
    private EditText mPass;
    /**
     * 登录
     */
    private Button mDenglu;
    /**
     * 注册
     */
    private Button mRegister;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

    }

    private void initView() {

        mPhone = (EditText) findViewById(R.id.phone1);
        mPass = (EditText) findViewById(R.id.pass);
        mDenglu = (Button) findViewById(R.id.denglu);
        mDenglu.setOnClickListener(this);
        mRegister = (Button) findViewById(R.id.register);
        mRegister.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
    switch (v.getId()) {

        case R.id.denglu:
            String s = mPhone.getText().toString();
            String s1 = mPass.getText().toString();
            //拿到服务端的登录方法  flowable 被观察者
            Flowable<LoginBean> flowable = RetrofitHelper.getServiceAPI().getLogin("login", s, s1);
            flowable.observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                //订阅
                .subscribe(new Consumer<LoginBean>() {
                    @Override
                    public void accept(LoginBean loginBean) throws Exception {
                        Toast.makeText(MainActivity.this,loginBean.getMsg(),Toast.LENGTH_SHORT).show();
                        int uid = loginBean.getData().getUid();
                        Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                        intent.putExtra("uid",uid+"");
                        startActivity(intent);
                    }
                });
            break;
        case R.id.register:
            break;
    }
    }
}

SecondActivity 注册界面

public class SecondActivity extends AppCompatActivity {


    private SimpleDraweeView mSdv;
    private TextView mName;
    private TextView mKson;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        initView();
        String uid = getIntent().getStringExtra("uid");
        Flowable<UserBean> flowable = RetrofitHelper.getServiceAPI().getUser("getUserInfo", uid);
        flowable.observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Consumer<UserBean>() {
                    @Override
                    public void accept(UserBean userBean) throws Exception {
                        UserBean.DataBean data = userBean.getData();
                        String icon = (String) data.getIcon();
                        String nickname = (String) data.getNickname();
                        String username = data.getUsername();
                        if (icon!=null){
                            Uri uri = Uri.parse(icon);
                            mSdv.setImageURI(uri);
                        }
                        if (nickname!=null){
                            mKson.setText(nickname);
                        }else {
                            mKson.setText("痴心绝对");
                        }

                    }
                });


    }


    private void initView() {
        mSdv = (SimpleDraweeView) findViewById(R.id.sdv);
        mName = (TextView) findViewById(R.id.name);
        mKson = (TextView) findViewById(R.id.kson);
    }
}
ThirdActivity 个人信息

public class ThirdActivity extends AppCompatActivity implements View.OnClickListener {

    /**
     * 请输入手机号码
     */
    private EditText mMob1;
    /**
     * 请输入密码
     */
    private EditText mPas1;
    /**
     * 立即注册
     */
    private Button mZc1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_third);
        initView();

    }

    private void initView() {
        mMob1 = (EditText) findViewById(R.id.phone);
        mPas1 = (EditText) findViewById(R.id.pass);
        mZc1 = (Button) findViewById(R.id.reg);
        mZc1.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {

            case R.id.reg:
                String s = mMob1.getText().toString();
                String s1 = mPas1.getText().toString();
                Flowable<RegisterBean> flowable = RetrofitHelper.getServiceAPI().getReg("reg", s, s1);
                flowable.observeOn(AndroidSchedulers.mainThread())
                        .subscribeOn(Schedulers.io())
                        .subscribe(new Consumer<RegisterBean>() {
                            @Override
                            public void accept(RegisterBean registerBean) throws Exception {
                                Toast.makeText(ThirdActivity.this,registerBean.getMsg(),Toast.LENGTH_SHORT).show();;
                            }
                        });
                break;
        }
    }
}

App.

public class App extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}


















  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值