`
切切歆语
  • 浏览: 30551 次
  • 性别: Icon_minigender_1
  • 来自: 泸州市
社区版块
存档分类
最新评论
阅读更多

Retrofit是Square公司开发的一款针对Android网络请求的一个当前很流行的网络请求库。

官网:http://square.github.io/retrofit/
github:https://github.com/square/retrofit

使用需引入:

 

Java代码
  1. compile 'com.squareup.retrofit2:retrofit:2.1.0'  
  2. compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'  
  3. compile 'io.reactivex:rxandroid:1.0.1'  
  4. compile 'com.squareup.retrofit2:converter-gson:2.1.0'  

Retrofit包含了多种网络请求方式,可根据参考选择。
全路径

 

Java代码
  1. @GET(URL+"?platform=android&appkey=5a379b5eed8aaae531df5f60b12100cfb6dff2c1&c=member&a=getdepartments")  
  2. Call<解析实体类> getInfo1();  


@Query("key") String key用于接口键值对类型参数

 

Java代码
  1. @GET("app.php")  
  2. Call<UserInfo> getInfo2(@Query("platform") String platform, @Query("appkey") String appkey, @Query("c") String ip);  

 

@QueryMap 如果Query参数比较多,那么可以通过@QueryMap方式将所有的参数集成在一个Map统一传递

 

Java代码
  1. @GET("app.php")  
  2. Call<UserInfo> getInfoMap(@QueryMap Map<String,String> map);  

 

注意:以上GET换成POST也是一样的效果

@Field("key") String key用于接口键值对类型参数

Java代码
  1. @FormUrlEncoded  
  2. @POST("app.php")  
  3. Call<UserInfo> postField(@Field("platform") String bookId, @Field("appkey") String title,@Field("c") String content);  


@FieldMap 如果Field参数比较多,那么可以通过@FieldMap方式将所有的参数集成在一个Map统一传递

Java代码
  1. @FormUrlEncoded  
  2. @POST("app.php")  
  3. Call<UserInfo> postInfoMap(@FieldMap Map<String,String> map);  


对于 Retrofit 中新的URL定义方式也是有一定要求的,版本不同有时格式也不一样,现在大多数2.0以上,@GET/POST()建议格式不要以 /开头,如:

 

Java代码
  1. @POST("/app.php")  

 

而是:URL以 / 结尾 如:(注:全路径则不影响)

 

Html代码
  1. http://www.baidu.com/  

 

代码:

定义接口 IRequestService .java

Java代码
  1. @GET(URL+"app.php?platform=android&appkey=5a379b5eed8aaae531df5f60b12100cfb6dff2c1&c=member&a=getdepartments")  
  2. Call<UserInfo> getInfo1();  
  3.   
  4. /*@Query("apikey") String apikey 用于接口键值对类型参数*/  
  5. @GET("app.php")  
  6. Call<UserInfo> getInfo2(@Query("platform") String platform, @Query("appkey") String appkey, @Query("c") String ip, @Query("a") String tag);  
  7.   
  8. /*@QueryMap  如果Query参数比较多,那么可以通过@QueryMap方式将所有的参数集成在一个Map统一传递*/  
  9. @GET("app.php")  
  10. Call<UserInfo> getInfoMap(@QueryMap Map<String,String> map);  


使用

Java代码
  1. Retrofit retrofit = new Retrofit.Builder()  
  2.         .baseUrl(urls)  
  3.         .addConverterFactory(GsonConverterFactory.create())  
  4.         .build();  
  5. IRequestService service = retrofit.create(IRequestService.class);  
  6. Call<DepartmentInfo> call=service.getInfo1();  
  7. call.enqueue(new Callback<DepartmentInfo>() {  
  8.     @Override  
  9.     public void onResponse(Call<DepartmentInfo> call, Response<DepartmentInfo> response) {  
  10.         DepartmentInfo  info=response.body();  
  11.         mTextView.setText(info.getError()+"-----"+info.getData().get(0).toString());  
  12.         Toast.makeText(getApplicationContext(),info.getError(),Toast.LENGTH_LONG).show();  
  13.         Log.i("tag", info.getData().get(0).getDepartname());  
  14.         Log.i("tag", info.getData().get(1).getDepartname());  
  15.     }  
  16.   
  17.     @Override  
  18.     public void onFailure(Call<DepartmentInfo> call, Throwable t) {  
  19.   
  20.     }  
  21. });  

 

Retrofit + RxJava结合使用

和上面差不多, 只不过不再是Call对象而是Observable对象,及RxJava中的事件源。

Java代码
  1. @GET(URL+"app.php?platform=android&appkey=5a379b5eed8aaae531df5f60b12100cfb6dff2c1&c=member&a=getdepartments")  
  2. Observable<UserInfo> getRxjava();  
  3.   
  4. @POST("app.php")  
  5. Observable<UserInfo> getUserFollowingObservable(@QueryMap Map<String,String> map);  

 

使用

Java代码
  1. RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io());  
  2. Retrofit retrofit11 = new Retrofit.Builder()  
  3.         .baseUrl(urls)  
  4.         .addConverterFactory(GsonConverterFactory.create())  
  5.         .addCallAdapterFactory(rxAdapter)  
  6.         .build();  
  7. IRxJavaService apiService =  retrofit11.create(IRxJavaService.class);  
  8. Observable<DepartmentInfo> call = apiService.getUser(Util.showMap());  
  9. subscription = call  
  10.         .subscribeOn(Schedulers.io())  
  11.         .observeOn(AndroidSchedulers.mainThread())  
  12.         .subscribe(new Subscriber<DepartmentInfo>() {  
  13.             @Override  
  14.             public void onCompleted() {  
  15.             }  
  16.             @Override  
  17.             public void onError(Throwable e) {  
  18.   
  19.             }  
  20.             @Override  
  21.             public void onNext(DepartmentInfo user) {  
  22.                 Toast.makeText(getApplicationContext(),  
  23.                         user.getData().get(0).getDepartname(),  
  24.                         Toast.LENGTH_SHORT)  
  25.                         .show();  
  26.             }  
  27.         });  

总结:

Retrofit的使用和理解简单的梳理了一遍,希望能够帮助大家更好地理解Retrofit的使用。

 

源码点击下载

分享到:
评论

相关推荐

    Android retrofit+rxjava+okhttp 学习案例

    在Android开发中,Retrofit、RxJava和OkHttp是三个非常重要的库,它们共同构建了高效、简洁的网络请求框架。下面将详细讲解这三个库及其结合使用的知识点。 **Retrofit** 是一个由Square公司开发的Android和Java...

    Retrofit+rxjava+mvp形式上传多张图片完整示例

    **MVP(Model-View-Presenter)** 是一种设计模式,它在Android开发中广泛使用,以分离业务逻辑和用户界面。在MVP中,Model层负责数据处理,Presenter层作为Model和View的桥梁,处理逻辑并更新视图,而View则负责...

    最新retrofit+rxjava+MVP

    总的来说,"最新retrofit+rxjava+MVP"是一个现代化的Android开发架构,它利用Retrofit简化网络通信,通过RxJava实现异步操作的优雅处理,借助MVP模式提升代码组织和测试性。开发者在实践中可以灵活运用这些工具,...

    Android中MVP+Retrofit+Rxjava框架的demo

    在Android开发中,MVP(Model-View-Presenter)架构模式、Retrofit网络库和RxJava响应式编程库是常用的技术栈,它们可以协同工作,提高应用的可维护性和代码组织性。以下是对这些技术的详细说明: 1. MVP架构模式:...

    Android—Retrofit+RxJava+OkHttp与MVP框架结合使用并且附带底部导航栏切换动态效果

    在Android开发中,Retrofit、RxJava和OkHttp是三个非常重要的库,它们共同构建了高效、灵活的网络请求框架。结合MVP(Model-View-Presenter)设计模式,可以打造出稳定且易于维护的Android应用。现在我们来深入探讨...

    Retrofit2+Rxjava2+MVP demo

    Retrofit2与RxJava2的结合是Android开发中的常见最佳实践。Retrofit可以方便地定义网络接口,而RxJava则提供了流式处理和异步操作的能力。通过Retrofit的CallAdapter,我们可以将网络请求转换为Observables,然后...

    Retrofit+RxJava封装网络请求

    在Android开发中,Retrofit和RxJava是两个非常重要的库,它们被广泛用于网络请求和数据处理。Retrofit提供了一种简洁的接口定义方式来创建HTTP服务,而RxJava则是一个响应式编程库,能够优雅地处理异步操作。本文将...

    Retrofit+RXJava+MVP

    在Android开发中,Retrofit、RXJava和MVP(Model-View-Presenter)是三个非常重要的库和技术模式,它们能够帮助开发者构建出高效、可维护的网络请求与应用架构。让我们详细了解一下这三个技术。 首先,Retrofit是由...

    retrofit+rxjava+MVP框架的使用

    在Android开发中,Retrofit和RxJava的组合已经成为构建网络请求的一种流行方式,尤其是在与Model-View-Presenter(MVP)设计模式结合时,能够提供更高效、灵活的编程体验。下面将详细介绍如何使用Retrofit+RxJava+...

    Android网络请求开发套件okhttp+retrofit+rxJava模块源代码

    本资源位Android中完整的可用的代码module,包含以下要素: 1. okhttp基本用法介绍; 2. SSL证书相关工具类: 3. 普通POST 和GET请求; 4. 文件上传下载; 5. okhttp+retrofit+rxJava

    Android整合搭建RxJava+Retrofit+LiveData+OkHttp框架实现MVVM模式开发

    工程目录说明: base:基础类库。 exception:异常类模块。 ... ...model:数据模型,实体类定义。...repository:数据仓库,包括网络接口请求数据,sqlite数据库,文件File存储,SharedPreferences数据存储。...

    Android 使用MVP+RxJava+Retrofit

    在Android应用开发中,"Android使用MVP+RxJava+Retrofit"是一个常见的技术栈,用于构建高效、可维护的网络请求和业务逻辑处理。这个技术组合的优势在于它能够清晰地分离视图、模型和presenter层,同时利用响应式编程...

    Okhttp+Retrofit+Rxjava+Picasso

    在Android开发中,"Okhttp+Retrofit+Rxjava+Picasso"是一个常见的高效网络请求与数据处理的组合。这个组合充分利用了各自库的优势,构建了一个强大、灵活且易于管理的网络请求架构。 首先,OkHttp是Square公司推出...

    基于MVP+RxJava+Retrofit2+Okhttp3+Rxlifecycle+Butterknife的开发框架

    基于MVP+RxJava+Retrofit2+Okhttp3+Rxlifecycle+Butterknife的开发框架。架构层:V层只负责视图的操作,P层只负责数据的交互,M层处理逻辑的操作。网络层,包括普通的get/post请求,单图多图上传,带对话框试请求,...

    安卓retrofit2 + rxjava2 + okhttp3多线程下载

    本项目标题提到的"安卓retrofit2 + rxjava2 + okhttp3多线程下载"正是一个利用现代Android开发库来优化下载流程的方法。以下将详细介绍这三个库以及它们如何协同工作实现多线程下载。 1. **Retrofit2**: Retrofit...

    MVVM+RXjava+retrofit2+Okhttp+Router组件化开发

    在现代Android应用开发中,MVVM(Model-View-ViewModel)架构、RxJava、Retrofit2、OkHttp以及组件化开发已经成为主流技术栈。这些工具和技术的组合为开发者提供了高效、可测试和易于维护的解决方案。 **MVVM架构**...

    Retrofit2+Rxjava2网络请求异常统一封装处理

    在Android应用开发中,网络请求是必不可少的一部分,Retrofit2和RxJava2是两种非常流行的库,用于构建和管理网络接口。本篇文章将详细讲解如何使用Retrofit2和RxJava2进行网络请求,并进行异常统一封装处理,以便...

    rxjava+retrofit+okhttp实现网络请求

    在Android开发中,网络请求是不可或缺的一部分,而`RxJava`、`Retrofit`和`OkHttp`的组合成为了一种高效、灵活的解决方案。这三个库各司其职,共同构建了一个强大的网络请求框架。 首先,`Retrofit`是由Square公司...

    Okhttp+Retrofit2+RxJava1.0.0 网络请求框架

    【Okhttp+Retrofit2+RxJava1.0.0 网络请求框架】是Android开发中一种高效、易用的网络请求解决方案,结合了三个强大的库:Okhttp作为网络底层通信,Retrofit作为接口调用的封装,以及RxJava用于异步处理和流式数据...

Global site tag (gtag.js) - Google Analytics