一、概述

     最近开始接触  Rerofit,它跟其他的网络请求框架如  Andoid Async Http、 Volley、 OKHttp 一样,都封装了底层的网络请求,仅暴露出一些对开发者来说调用简单的接口。而 Retrofit 底层就集成了 OKHttp。Retrofit 是一套 REST 架构的 Android 网络请求框架,基于注解,提供 JSON to POJO、POJO to JSON, 网络请求封装。      通过注解的方式,我们可以快速完成一个网络请求,包括:GET、POST、DELETE、PUT。这样可以简化我们的开发流程,提高我们项目的开发速率。      由于现在 Retrofit 的版本是  2.0.0-beta2,与之前的版本相比,新版 Retrofit 的 API 接口做出了较大的改动。而网上的 Blog 和 Demo 大多数是针对低版本的,只能说具有参考价值,但缺乏实用性。借着这几天的学习,我将以一个小Demo作为入口,逐步介绍 Retrofit 的基本用法,并也会记录我在这过程中所遇到的问题。 二、实战      在使用 Retrofit 之前,我们首先要导入 Jar 包。      针对 Eclipse 开发环境,添加 Jar 包的过程在这里我就不做详细介绍了,网上一抓一大把。      针对 Android Studio 开发环境,个人很喜欢这个开发工具。各种快捷键的配置,大大提高你的开发效率。现在大多数开发者也慢慢的转移到这个工具上进行开发。对于熟悉 Eclipse 的朋友来说这个过程可能不适应,但本人还是推荐使用这个开发工具。使用 Android Studio 来开发 Android 应用,因为其本身就集成了 Gradle 这个构建工具,所以添加第三方类库就很方便了。详情如下:      选择项目的 app 模块,找到 build.gradle 这个文件,打开后在 dependences 节点上添加第三方类库:
dependences {               ...               compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'          }

     同步一下就可以在该工程里使用 Retrofit 了。      Retrofit 可以将你的 Http 请求仅需通过在 Java 接口 方法上添加相应的注解就可以实现。
public interface GitHubService {             @GET("/users/{user}")             Call getUser(@Path("user") String user);        }

    然后通过 Retrofit 类来生成该接口的实现类。
Retrofit retrofit = new Retrofit.Builder()                                   .baseUrl("https://api.github.com")                                   .build();        GitHubService service = retrofit.create(GitHubService.class);
              接下来就是发送 HTTP 请求了。
Call call = service.getUser("userName);      call.enqueue(new Callback(){          @override          public void onResponse(Response response) {               User model = response.body();               if (model == null) {                    ResponseBody responseBody = response.errorBody();                    if (responseBody != null) {                         try {                              System.out.println("Error : " + responseBody.string();                         } cartch (Exception e) {                              e.printStackTrace();                         }                    }               } else {                    System.out.println("User : " + user.toString());               }          }                    @override          public void onFailure(Throwable t) {               System.out.println("Failure : " + t.getMessage());          }     });

     注意:因为涉及到网络请求,所以要在 AndroidManifest.xml 配置清单文件中添加网络权限:
              同时,由于在 Android 4.0 以上系统在UI线程上执行网络请求会阻塞主线程,因此我们要开启一个子线程来执行网络请求:
new Thread() {               @override               public void run() {                    // 将上面的 call.enqueue() 代码放在此处执行;杜宇要在请求结束后刷新 UI,则要结合一下 Handler.               }          }.start();

     User 实体类: public class User {
          private String login;
          private Integer id;
          private String avatarUrl;
          private String gravatarId;
          private String url;
          private String htmlUrl;
          private String followersUrl;
          private String followingUrl;
          private String gistsUrl;
          private String starredUrl;
          private String subscriptionsUrl;
          private String organizationsUrl;
          private String reposUrl;
          private String eventsUrl;
          private String receivedEventsUrl;
          private String type;
          private Boolean siteAdmin;
          private String name;
          private String company;
          private String blog;
          private String location;
          private String email;
          private Boolean hireable;
          private Object bio;
          private Integer publicRepos;
          private Integer publicGists;
          private Integer followers;
          private Integer following;
          private String createdAt;
          private String updatedAt;
          // 对应的 get/set 方法
     }

     至此,一个关于 Retrofit 的简单例子就完成了。当然,Retrofit 提供的 API 功能还有很多,这也是我接下来要学习的。欢迎有兴趣的朋友一起交流、 探讨。     源码实例: RetrofitTest

更多相关文章

  1. Android(安卓)总结:进阶之路(资源与方法)
  2. Android简明开发教程九:创建应用程序框架
  3. 使用Qt5.9开发Android(安卓)应用程序(Windows平台篇)
  4. Android开发工具
  5. Linux开发环境搭建 三 (在Ubuntu上Android/Linux编译环境的准备)
  6. 利用HTML5开发Android
  7. Android伸手党系列之四:Android项目开发常用技术
  8. Flutter 混合开发(Android)Flutter跟Native相互通信
  9. 《Android经验分享》周刊第8期

随机推荐

  1. Android(安卓)动画框架详解(第 1 部分)
  2. Android源码学习之环境搭建(Ubuntu下载And
  3. Android之Handler:实现计时器实例
  4. Android用户界面 UI组件--TextView及其子
  5. Java JDK 收费,Android(安卓)也坐不住了,程
  6. Android(安卓)APP欢迎界面小试身手
  7. 一、Bitmap的recycle问题
  8. heif android解码流程
  9. android中app的优化流程
  10. Android界面布局编程