Retrofit+RxJava+Okhttp简单实现登录注册
来源:互联网 发布:mox上位机软件 编辑:程序博客网 时间:2024/05/24 02:38
首先导入依赖:
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 0
- Retrofit+RxJava+Okhttp简单实现登录注册
- 简单MVP-Retrofit-Rxjava-OKhttp
- Rxjava+Retrofit+okhttp+mvp实现
- rxjava+retrofit+okhttp+mvp 简单实践
- 终极封装 Rxjava+Retrofit+okhttp+mvp实现
- Retrofit+RxJava+OKhttp+RxBus
- retrofit+okhttp+rxjava
- Rxjava 、Retrofit、Okhttp整合
- Rxjava+ReTrofit+okHttp深入浅出
- RxJava+Retrofit+OkHttp实战
- Retrofit+Okhttp+RxJava
- retrofit+okhttp+rxjava
- Android OkHttp Retrofit RxJava
- RxJava+Retrofit+OkHttp+mvp
- 封装RxJava+Retrofit+OkHttp
- mvp+rxjava+retrofit+okhttp
- Retrofit + Rxjava + Okhttp
- MVP+Retrofit+Okhttp+RxJava
- D3D11和D3D12多线程渲染框架的比较(一)
- bzoj3262 陌上花开(CDQ分治)
- Java中的布局管理器总结
- 解决mysql乱码问题的多种方式
- AngularJs点击状态值改变背景色
- Retrofit+RxJava+Okhttp简单实现登录注册
- 7.3用函数编程计算两个整数的最大值
- Java学习10:继承VS组合
- mahout 详解
- chez scheme的交叉编译
- 回文树(回文自动机)学习小记
- linux高性能服务器编程学习笔记八:I/O复用
- 水仙花
- 用指针处理计算字符串长度