最近在自己的项目中使用到了现在比较火的RxJava和Retrofit框架,关于RxJava和Retrofit的介绍就不多说了,下面开始编写代码。
1.项目很简单就一个接口,一个Bean类和一个activity。
2.添加所需要的依赖
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'
3.编写登录接口
public interface LoginService {
/**
* @param username
* @param password
* @return
*/
@GET("login")
Call<Users> login(@Query("username") String username, @Query("password") String password);
}
4.编写核心代码
MainActivity.java
private String loginUrl = "http://192.168.16.121:8080/NewsClient/user/";
private void login(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(loginUrl)
//将JSON对象转为实体类 .addConverterFactory(GsonConverterFactory.create())
//添加RxJava与Retrofit适配器工厂 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
LoginService loginService = retrofit.create(LoginService.class);
Observable<Users> observable = loginService.login(etUsername.getText().toString()trim(),etPassword.getText().toString().trim());
//完成、错误、下一步 三个方法的回调 observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Users>() {
@Override
public void onCompleted() {
Log.i("MAKE","onCompleted...");
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
Log.e("MAKE","onError...");
}
@Override
public void onNext(Users users) {
Log.i("MAKE"," users == "+users.toString());
if(users!=null){
Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_LONG).show();
}
}
});
}
5.效果