引入:
compile 'io.reactivex:rxjava:x.y.z'
compile 'io.reactivex:rxandroid:1.0.1'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
如果需要RXJava支持:
需添加:
compile 'io.reactivex:rxjava:1.1.5'
RXJAVA入门: http://www.jianshu.com/p/6eb7513e4d15 (包看包会)
作者:XINHAO_HAN
单独使用Retrofit
先Build一个Retrofit类主类
Retrofit mRetrofit= new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("填入你的URL")
.build();
Build完成来,我们来使用一下下:看清楚老司机要发车了~~~
mRetrofit.create(interface.class);//唉?还没发车就遇到减速带了,我的哥?这是个啥?
别急,这是个映射关系的接口,Retrofit 一种观念,就是将本地的访问请求映射到服务器上的方法
interface.class介绍:
public interface XINHAO_XIN_Service {
//Retrofit的使用
@GET("userLogin.htm")
Call<UserBeanLogin> login(
@Query("username") String username,//Query字面意思是查询
@Query("password") String password
);
}
Query字面意思是查询但它的深入意思,我给你看一段URL
http://localhost:8080/BY/user/login?username=123&password=123
它的意思就是把"?username"和"&password"给你自动加上了
相当于
@GET("/user/login")//<-你的半路劲,比如我这个是和用户相关的一个URL
+ @Query("username") +string + @Query("password") + password
有点晕??????
别急,看这样
.baseUrl("填入你的URL") = http://localhost/BY
@GET("/user/login") = /user/login
@Query("username") String username = [?username=123]
比图username赋值123
@Query("password") String password = [&password =123]
总加一块:
http://localhost/BY/user/login?username=123&password =123
这就OK了
然后填入
XINHAO_XIN_Service xinhao_xin_service = mRetrofit.create(XINHAO_XIN_Service.class);
最后
xinhao_xin_service.login("XINHAO_HAN","123456").enqueue(new Callback<UserBeanLogin>() {
@Override
public void onResponse(Call<UserBeanLogin> call, Response<UserBeanLogin> response) {
//成功!
}
@Override
public void onFailure(Call<UserBeanLogin> call, Throwable t) {
//失败
}
});
//总共
Retrofit mRetrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl("URL")
.build();
XINHAO_XIN_Service xinhao_xin_service = mRetrofit.create(XINHAO_XIN_Service.class);
xinhao_xin_service.login("XINHAO_HAN","123456").enqueue(new Callback<UserBeanLogin>() {
@Override
public void onResponse(Call<UserBeanLogin> call, Response<UserBeanLogin> response) {
//成功!
}
@Override
public void onFailure(Call<UserBeanLogin> call, Throwable t) {
//失败
}
});
//--------------------------------------外加Service
public interface XINHAO_XIN_Service {
//Retrofit的使用
@GET("userLogin.htm")
Call<UserBeanLogin> login(@Query("username") String username, @Query("password") String password);
}
这就是Retrofit简单地使用,来继续说说它于RXJAVA的使用
看好,有点不一样了,看好这个service接口,看好睁大眼睛0.0.
public interface XINHAO_XIN_Service {
//Retrofit的使用
@GET("userLogin.htm")
Observable<UserBeanLogin> login(@Query("username") String username, @Query("password") String password);
}
之前的 Call<UserBeanLogin> 成为了 Observable<UserBeanLogin>
使用:
Retrofit mRetrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
//表示受支持RXJAVA 0.0 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.baseUrl("URL")
.build();
XINHAO_XIN_Service xinhao_xin_service = mRetrofit.create(XINHAO_XIN_Service.class);
xinhao_xin_service.login("123", "456")
.subscribeOn(Schedulers.newThread()) //重新NEW一个子线程
.observeOn(Schedulers.io()) //在IO线程运行
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<T>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
//请求失败
}
@Override
public void onNext(T t) {
//请求成功
}
});
简单使用,到此结束啦~可根据RXJAVA教程来进阶使用
RXJAVA教程(包看包会)
RXJAVA入门: http://www.jianshu.com/p/6eb7513e4d15 (包看包会)
作者:XINHAO_HAN








网友评论