Retrofit是REST安卓客户端请求库。使用Retrofit可以进行GET,POST,PUT,DELETE等请求方式。

官方文档:http://square.github.io/retrofit/

1.在AndroidManifest.xml中请求了网络权限:
<uses-permission android:name="android.permission.INTERNET"/>

2.添加Gradle依赖项:

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta3'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta3'
compile 'io.reactivex:rxandroid:1.0.1'

Retrofit 支持许多种解析方式来解析响应数据:
Gson com.squareup.retrofit:converter-gson:2.0.0-beta2
Jackson com.squareup.retrofit:converter-jackson:2.0.0-beta1
Moshi com.squareup.retrofit:converter-moshi:2.0.0-beta1
Protobuf com.squareup.retrofit:converter-protobuf:2.0.0-beta1
Wire com.squareup.retrofit:converter-wire:2.0.0-beta1
Simple XML com.squareup.retrofit:converter-simplexml:2.0.0-beta1

3.创建API接口:

public interface GitHub {@GET("/repos/{owner}/{repo}/contributors")Call<List<Contributor>> contributors(@Path("owner") String owner,@Path("repo") String repo);}

4.创建retrofit实例,并添加gson转换器:

public static final String API_URL = "https://api.github.com";
// Create a very simple REST adapter which points the GitHub API.
Retrofit retrofit = new Retrofit.Builder().baseUrl(API_URL).addConverterFactory(GsonConverterFactory.create()).build();

5.创建一个Java类Contributor,用来保存接收到的数据:

public static class Contributor {public final String login;public final int contributions;public Contributor(String login, int contributions) {this.login = login;this.contributions = contributions;}
}

6.调用API接口:

// Create an instance of our GitHub API interface.
GitHub github = retrofit.create(GitHub.class);// Create a call instance for looking up Retrofit contributors.
//完整的请求地址:https://api.github.com/repos/square/retrofit/contributors
Call<List<Contributor>> call = github.contributors("square", "retrofit");// Fetch and print a list of the contributors to the library.
List<Contributor> contributors = call.execute().body();
for (Contributor contributor : contributors) {System.out.println(contributor.login + " (" + contributor.contributions + ")");
}

7.取消请求
我们可以终止一个请求。终止操作是对底层的httpclient执行cancel操作。即使是正在执行的请求,也能够立即终止。
call.cancel();

Retrofit与RxJava结合

1.使用Observable创建一个API接口:

public interface GitHub2 {@GET("/repos/{owner}/{repo}/contributors")Observable<List<Contributor>> contributors(@Path("owner") String owner,@Path("repo") String repo);}

2.创建retrofit对象实例时,通过addCallAdapterFactory来添加对RxJava的支持:

Retrofit retrofit = new Retrofit.Builder().baseUrl(API_URL).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();

3.调用API接口:

// Create an instance of our GitHub API interface.
GitHub2 github = retrofit.create(GitHub2.class);
Observable<List<Contributor>> observable = github.contributors("square", "retrofit");observable.subscribe(new Subscriber<List<Contributor>>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {}@Overridepublic void onNext(List<Contributor> contributors) {for (Contributor contributor : contributors) {System.out.println("observable " + contributor.login + " (" + contributor.contributions + ")");}}
});

Retrofit使用OkHttp

OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new Interceptor() {@Overridepublic okhttp3.Response intercept(Chain chain) throws IOException {okhttp3.Response response = chain.proceed(chain.request());response.header(IF_MODIFIED_SINCE, "");return response;}}).build();
Retrofit retrofit = new Retrofit.Builder().baseUrl(HOST).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).addConverterFactory(GsonConverterFactory.create()).client(okHttpClient).build();

Retrofit的简单使用相关推荐

  1. Okhttp 与 Retrofit的简单介绍及两者间的联系

    版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758. https://blog.csdn.net/u013132758/article/deta ...

  2. 简单java登录页面android_Android 之路 - RxJava2+Retrofit实现简单登陆

    原标题:Android 之路 - RxJava2+Retrofit实现简单登陆 前言 使用RxJava2+Retrofit实现简单登陆. 正文1. Hello world1.1 相关版本 Androi ...

  3. OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易用。

    okhttp-OkGo 项目地址:jeasonlzy/okhttp-OkGo 简介:OkHttpUtils-2.0.0 升级后改名 OkGo,全新完美支持 RxJava,比 Retrofit 更简单易 ...

  4. Retrofit 最简单的快速入门及封装

    Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...

  5. Retrofit 最简单的快速入门及自己封装

    简单介绍及官方文档的坑 官方文档 http://square.github.io/retrofit/ Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底 ...

  6. Retrofit 2简单使用教程

    作者: Chike Mgbemena 原文地址:https://code.tutsplus.com/tutorials/getting-started-with-retrofit-2–cms-2779 ...

  7. Retrofit框架简单学习使用(举例:酷狗搜索和歌曲详情接口)

    2019.09.24 说明:获取歌曲详情接口已失效,大家可根据自己实际url来测试. 首先先看效果图: 然后上Retrofit的注解表:(图片转自简书:https://www.jianshu.com/ ...

  8. Retrofit+RxJava简单使用(入门专用= - =)

    首先老规矩加入所需要的依赖 这里要根据自己的gradle进行适配的依赖,否则会引起不必要的错误!!! 另外Retrofit是基于Okhttp请求,需要进行网络请求,所以这里我们还要加入网络权限:第一条 ...

  9. Android工厂设计模式(简单工厂,工厂方法,抽象工厂,BitmapFactory简单工厂分析,Retrofit抽象工厂分析)

    文章目录 创建型设计模式(简单工厂,工厂方法,抽象工厂) 一.简单工厂模式 引出简单工厂模式 二.工厂方法模式 三.抽象工厂模式 Android源码中用到的工厂模式举例 一.BitmapFactory ...

最新文章

  1. 能力差的程序员90%输在这点上!CTO:其实都是瞎努力!
  2. 2021/6/18~19 每天学习python 30分钟 -了解python - python的基本变量概述
  3. 二十三、 爬取mzsock网站写真社区
  4. django项目中使用KindEditor富文本编辑器
  5. kotlin学习笔记——枚举、封闭类
  6. 当随机不够随机:一个在线扑克游戏的教训
  7. 显示器选三星还是飞利浦_如何为飞利浦色相灯设置计时器
  8. P5488-差分与前缀和【NTT,生成函数】
  9. java打开别人的代码报错_同样的代码,别人的可以运行我的报错,求解答
  10. 规则引擎集成接口(九)Java类对象
  11. Ubuntu21.04设置国内镜像源
  12. 利用skipList(跳表)来实现排序(待补充)
  13. 深度学习图像分类(一):LeNet
  14. 上市企业小米科技应用的发票扫描仪
  15. python实现excel筛选功能并输出_学习用python筛选数据并导出excel表
  16. php本地解密,PHPDecode 在线解密工具
  17. free-mybatis-plugin插件下载
  18. 电脑版微信多开,只需要三步
  19. 第13期 《仰望星空,脚踏实地》 12月刊
  20. 枚举---知识总结----------gyy加以整理以及改为C++方法

热门文章

  1. bootstrapselect使用 Bootstrap's dropdowns require Popper.js
  2. 图数据库neo4j安装、neo4j使用
  3. python自定义切片_自定义Python切片,请指教
  4. 计算机科学与技术班级口号八字,班级的八字口号
  5. 天猫整站SSM-分页-herf(做个人学习笔记整理用)
  6. linux下proc目录,Linux /proc目录详解
  7. insert事务隔离mysql_MySQL数据库详解(三)MySQL的事务隔离剖析
  8. leetcode53 dp and 分治
  9. 《我的十年图像生涯》—王郑耀(西安交通大学)
  10. nios ii小实验——第一个demo指导书