Retrofit的简单使用方法
2016-08-26 11:53
141 查看
Retrofit是一个类型安全的网络请求库,它和OKHttp共同出自于square公司。Retrofit是对OKHttp做了一层封装,把网络请求都交给了OKHttp,简化了网络请求流程,使我们只需要通过简单的配置就能使用retrofit来进行网络请求了。下面就来看下
(一) 引入库
在gralde文件中引入后续要用到的库
(二) 初始化Retrofit
创建Retrofit,并设置BaseURL和Json转换,
(三) 定义接口
(四) 网络请求使用
创建请求服务,并为网络请求方法设置参数:
发送请求,通过调用Retrofit2的execute(同步)或者enqueue(异步)方法,发送请求到网络服务器,并返回一个响应(Response):
Retrofit 与 RxJava结合使用
Retrofit本身对Rxjava提供了支持。下面来看下两者结合该怎么使用:
(一) 首先要添加Retrofit对RxJava的支持,在build.gradle中添加:
(二) 在定义Retrofit时,使用RxJava作为毁掉适配器:
(三) 定义接口
使用Retrofit与RxJava结合,那么定义的RequestUrl 返回值就不在是一个Call了,而是一个Observable,代码如下:
(四) 网络请求使用
创建请求服务,并为网络请求方法设置参数和之前的方法相同:
发送请求则是通过RxJava的观察者模式和订阅方法来实现:
这样基本上就完成了Retrofit和Rxjava的简单结合。
Android开发路上一只小菜鸟的拙见,如有错误欢迎批评指出,定及时纠正,谢谢!
Retrofit的简单使用方法:
(一) 引入库
在gralde文件中引入后续要用到的库
/**Retrofit引入库*/ compile 'com.squareup.retrofit2:retrofit:2.0.0' compile 'com.squareup.retrofit2:converter-gson:2.0.0' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0' /**O_K_HTTP引入库*/ compile 'com.squareup.okio:okio:1.5.0' compile 'com.squareup.okhttp3:okhttp:3.2.0'
(二) 初始化Retrofit
创建Retrofit,并设置BaseURL和Json转换,
ServiceGenerator工具类:
/** * 封装的Retrofit工具类 */ public class ServiceGenerator { /**初始化OkHttpClient*/ private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder() .connectTimeout(5, TimeUnit.SECONDS);//设置超时时间 /**初始化Retrofit*/ private static Retrofit.Builder builder = new Retrofit.Builder() .baseUrl("http://zthdwl.com/wap.php/")//baseURL .addConverterFactory(FastJsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()); public static <S> S createService(Class<S> serviceClass) { Retrofit retrofit = builder.client(httpClient.build()) .build(); return retrofit.create(serviceClass); } }
(三) 定义接口
RequestUrl接口类:
public interface RequestUrl { @FormUrlEncoded @POST("Public/loginAction") Call<User> LoginVery(@Field("phone") String phone, @Field("password") String password, @Field("type") String type); }
(四) 网络请求使用
创建请求服务,并为网络请求方法设置参数:
RequestUrl service = ServiceGenerator.createService(RequestUrl.class);
发送请求,通过调用Retrofit2的execute(同步)或者enqueue(异步)方法,发送请求到网络服务器,并返回一个响应(Response):
Call<User> loginCall = service.LoginVery(CodeUtils.encodeToString(account), CodeUtils.encodeToString(password), CodeUtils.encodeToString(type)); loginCall.enqueue(new Callback<User>() { @Override public void onResponse(Call<User> call, Response<User> response) { if (response.isSuccessful()) { /**请求成功*/ User user= new User(); user = response.body(); System.out.print(user); } } @Override public void onFailure(Call<User> call, Throwable t) { /**请求失败*/ Log.e("Login Throwable",t.getMessage()); } });
Retrofit 与 RxJava结合使用
Retrofit本身对Rxjava提供了支持。下面来看下两者结合该怎么使用:
(一) 首先要添加Retrofit对RxJava的支持,在build.gradle中添加:
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'
(二) 在定义Retrofit时,使用RxJava作为毁掉适配器:
Retrofit retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) //添加RxJava作为回调适配器 .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build();
(三) 定义接口
使用Retrofit与RxJava结合,那么定义的RequestUrl 返回值就不在是一个Call了,而是一个Observable,代码如下:
public interface RequestUrl { @FormUrlEncoded @POST("Public/loginAction") Observable<String> LoginVery1(@Field("phone") String phone, @Field("password") String password, @Field("type") String type); // @FormUrlEncoded // @POST("Public/loginAction") // Call<User> LoginVery(@Field("phone") String phone, @Field("password") String password, @Field("type") String type); }
(四) 网络请求使用
创建请求服务,并为网络请求方法设置参数和之前的方法相同:
RequestUrl service = ServiceGenerator.createService(RequestUrl.class);
发送请求则是通过RxJava的观察者模式和订阅方法来实现:
Observable<User> stringObservable = service.LoginVery2(CodeUtils.encodeToString(account), CodeUtils.encodeToString(password), CodeUtils.encodeToString(type)); stringObservable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<User>() { @Override public void call(User s) { Log.e("loginResponse1", s.toString()); User loginResponse = s; if (loginResponse.errcode.equals("00001")) { mLoginResponseOnListener.onSuccess(loginResponse); } else { mLoginResponseOnListener.onFailure(loginResponse.errinfo); } } });
这样基本上就完成了Retrofit和Rxjava的简单结合。
Android开发路上一只小菜鸟的拙见,如有错误欢迎批评指出,定及时纠正,谢谢!
相关文章推荐
- Retrofit的使用,及介绍,Retrofit中的各种方法的详细描述简单案例,三分钟学会Retrofit
- Retrofit简单使用方法
- Retrofit的简单使用方法
- 简单易懂的Retrofit使用方法
- ASP.NET使用确认对话框得简单方法
- 关于存储过程中一个参数表示多个查询条件使用方法的简单处理
- web.config文件自定义配置节的使用方法的一个简单例子
- 使用动态SQL语句是最简单的处理方法。
- 7,水晶报表的最简单使用方法
- 在ASP.NET中使用AJAX的简单方法
- 在ASP.NET中使用AJAX的简单方法
- Linux学习随手记(1) find命令的最简单的使用方法
- J2EE基础篇 对Log4J使用方法的简单讲解
- URLRewriter问题,使用URL重写的最简单方法
- 项目中用到的dbx命令的简单使用方法
- 一个简单的方法:找出哪个的程序使用了哪个端口
- linux file.src.rpm 使用方法的简单介绍
- 最简单的方法在DataGrid中自定义样式列(通过继承可以在Datagrid中使用下拉列表框,日期控件等)
- Asp.Net使用POST方法最简单的实现
- 使用DataAdapter.Update的简单方法~~~