Retrofit在很早以前推出来了,如今Retrofit2也已经广泛使用。 由于我没有Retrofit的基础,所以就直接从Retrofit2开始学习。
在学习的时候,我查看了很多博客,包括其官网,但是在学起来的总是找不到感觉,后来终于找到了一篇个人认为不错的文章:
你真的会用Retrofit2吗?Retrofit2完全教程
这篇文章配有示例源码,讲得很细致。
不过由于我在网络编程这一方面比较薄弱,所以在学习的时候,不得不对其中一些内容进行另外的补充(与前面的序号不是对应的):
1、有关RequestBody、Call等的知识点
2、HTTP请求方法:GET、HEAD、POST、PUT、DELETE、PATCH、OPTIONS、TRACE的作用
3、因为RequestBody的数据格式都要指定Content-Type,常见的有三种:
application/x-www-form-urlencoded 数据是个普通表单 multipart/form-data 数据里有文件 application/json 数据是个json(FormBody继承了RequestBody,它已经指定了数据类型为application/x-www-form-urlencoded)
所以在Example03.java 中,有使用到MediaType.parse(); 方法,这是okhttp3中的方法,其作用如下: Returns a media type for string, or null if string is not a well-formed media 大概意思就是根据传入字符串返回指定的媒体类型,但是如果传入的字符串是不是规范的,则返回null。
其中text/plain 为Content-Type(信息类型)的缺省值,它指明了主要类型(primary type)和次要类型(subtype)两个部分,两者之间用”/”分割。主要类型有9种,分别是application、audio、example、image、message、model、multipart、text、video。 每一种主要类型下面又有许多种次要类型,常见的有:
text/plain:纯文本,文件扩展名.txt text/html:HTML文本,文件扩展名.htm和.html image/jpeg:jpeg格式的图片,文件扩展名.jpg image/gif:GIF格式的图片,文件扩展名.gif audio/x-wave:WAVE格式的音频,文件扩展名.wav audio/mpeg:MP3格式的音频,文件扩展名.mp3 video/mpeg:MPEG格式的视频,文件扩展名.mpg application/zip:PK-ZIP格式的压缩文件,文件扩展名.zip(详细的Content-Type列表可以自行谷歌)
附:OkHttp3的基本用法
4、有关Gson:你真的会用Gson吗?Gson使用指南(一)
5、Converter是为了将Call<F> 转换为 Call<T> 的,而CallAdapter是为了将Call<R> 转换为T,如在你真的会用Retrofit2吗?Retrofit2完全教程中的Example08中演示的RxJavaCallAdapter就是为了将Call<Result<List<Blog>>>(R代表Result<List<Blog>>)转换为Observable<Result<List<Blog>>>(即T) (由于自定义Converter和CallAdapter部分在看博客时难以理解,所以我就自己模仿着自己撸了一遍(Retrofit2学习番外——自定义Converter与CallAdapter),欢迎指正)