Android(安卓)之 Retrofit 入门介绍
16lz
2021-12-24
一、概述
最近开始接触 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
更多相关文章
- Android(安卓)总结:进阶之路(资源与方法)
- Android简明开发教程九:创建应用程序框架
- 使用Qt5.9开发Android(安卓)应用程序(Windows平台篇)
- Android开发工具
- Linux开发环境搭建 三 (在Ubuntu上Android/Linux编译环境的准备)
- 利用HTML5开发Android
- Android伸手党系列之四:Android项目开发常用技术
- Flutter 混合开发(Android)Flutter跟Native相互通信
- 《Android经验分享》周刊第8期