Retrofit2.0的简单使用
2017-11-20 10:37
246 查看
上一篇博客写的是okhttp,接下来打算记录Retrofit2.0的学习,如有不足之处,还望指点一二。
在build.gradle中添加依赖:
这里用的实例是一个get请求的接口,baseUrl传的是主机地址+端口号,interface里面传的是后缀。
默认情况下Retrofit只支持将HTTP的响应体转换为ResponseBody,而Converter可以将Response转换为我们想要的类型,即是把<Response>替换成实体类。
依赖: compile "com.squareup.retrofit2:converter-gson:2.1.0",前面已添加过,其中包里面已经写好了Gson解析,具体实现如下:
RecommendationBean是打开url得到的实体类,到这里就是okhttp+retrofit的初步使用。而常与之一起使用的是Rxjava,Rxjava是一个响应式框架,采用观察者设计模式,很方便的实现了异步,这里以Rxjava为例,用Observer代替Call。
引入依赖:compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0',以上代码改写为:
把学习所得记下来,和大家共勉p( ^ O ^ )q
在build.gradle中添加依赖:
compile "com.squareup.retrofit2:retrofit:2.1.0" compile "com.squareup.retrofit2:converter-gson:2.1.0" compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
这里用的实例是一个get请求的接口,baseUrl传的是主机地址+端口号,interface里面传的是后缀。
public interface Service { //GET请求 /** * 当URL问号后面的参数存在时,就@Query传递参数, * 比如https://www.baidu.com/s?wd=android,就传getData(@Query("wd") String wd); */ @GET("api/recommendations") //Call<ResponseBody> getData(@Query("参数名")String"自己定义的变量"); Call<ResponseBody> getData(); //Retrofit注解之HTPP请求法 // @HTTP(method = "GET", path = "api/recommendations", hasBody = false) // Call<ResponseBody> getData(); } private void Test() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://baiting.longruncloud.com/") .build(); //无法直接调用Service接口里面的方法,我们需要自己创建代理对象service来调用 Service service = retrofit.create(Service.class); Call<ResponseBody> call = service.getData(); // 用法和OkHttp的call一致,只是我们不需要自己再写子线程到主线程的回调,具体原因上一篇博客有讲到 call.enqueue(new Callback<ResponseBody>() { @Override public void onResponse( Call<ResponseBody> call, Response<ResponseBody> response) { try { Log.e("response", response.body().string()); } catch (IOException e) { e.printStackTrace(); } } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { t.printStackTrace(); } }); }
默认情况下Retrofit只支持将HTTP的响应体转换为ResponseBody,而Converter可以将Response转换为我们想要的类型,即是把<Response>替换成实体类。
依赖: compile "com.squareup.retrofit2:converter-gson:2.1.0",前面已添加过,其中包里面已经写好了Gson解析,具体实现如下:
public interface Service { //GET请求 @GET("api/recommendations") Call<RecommendationBean> getData(); } private void Test() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://baiting.longruncloud.com/") .addConverterFactory(GsonConverterFactory.create())//为retrofit添加Gson支持 .build(); Service service = retrofit.create(Service.class); Call<RecommendationBean> call = service.getData(); call.enqueue(new Callback<RecommendationBean>() { @Override public void 4000 onResponse(Call<RecommendationBean> call, Response<RecommendationBean> response) { RecommendationBean body = response.body(); Log.e("body", body.getCarousels().get(0).getImage());//打印出来是以图片地址 } @Override public void onFailure(Call<RecommendationBean> call, Throwable t) { t.printStackTrace(); } }); }
RecommendationBean是打开url得到的实体类,到这里就是okhttp+retrofit的初步使用。而常与之一起使用的是Rxjava,Rxjava是一个响应式框架,采用观察者设计模式,很方便的实现了异步,这里以Rxjava为例,用Observer代替Call。
引入依赖:compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0',以上代码改写为:
public interface Service { //GET请求 @GET("api/recommendations") Observable<RecommendationBean> getData(); } private void Test() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://baiting.longruncloud.com/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//RxJavaCallAdapterFactory为Retrofit添加RxJava支持 .build(); //无法直接调用Service接口里面的方法,我们需要自己创建代理对象service来调用 Service service = retrofit.create(Service.class); service.getData().subscribeOn(Schedulers.io()).subscribe(new Subscriber<RecommendationBean>() { @Override public void onCompleted() { System.out.println("onCompleted"); } @Override public void onError(Throwable e) { System.err.println("onError"); } @Override public void onNext(RecommendationBean recommendationBean) { System.out.println(recommendationBean); Log.e("carouselsBean", recommendationBean.getCarousels().get(0).getImage()); } }); }
把学习所得记下来,和大家共勉p( ^ O ^ )q
相关文章推荐
- android 三剑客(Retrofit 2.0)简单使用
- Android中Retrofit2.0的简单使用
- Retrofit2.0和Rxjava结合使用的简单记录
- retrofit2.0的简单使用
- RxJava2和Retrofit2.0的简单使用
- Retrofit2.0的简单使用 (包含Gson)
- Retrofit2.0的简单使用
- Android Retrofit 2.0 简单使用
- retrofit 2.0 简单使用
- Retrofit2.0 简单使用总结
- 学习笔记——Retrofit2.0的简单使用
- 天气预报项目学习总结(- ButterKnife - Retrofit 2.0(okhttp) - Rxjava - Jackson - Ormlite - Mosby简单使用总结)
- Retrofit2.0简单使用总结
- Android中网络框架Retrofit2.0简单使用
- binbinyang-- Retrofit 2.0的简单使用(入门篇)-GET请求
- Retrofit 2.0关于get和post的网络访问的简单使用
- Retrofit2.0详解(一简单使用)
- Log4j 2.0在开发中的高级使用详解—配置简单的控制台输出(三)
- Retrofit2.0.0-beta2简单使用
- retrofit 开源库的简单使用