Retrofit在很早以前推出来了,如今Retrofit2也已经广泛使用。
由于我没有Retrofit的基础,所以就直接从Retrofit2开始学习。
在学习的时候,我查看了很多博客,包括其官网,但是在学起来的总是找不到感觉,后来终于找到了一篇个人认为不错的文章:
这篇文章配有示例源码,讲得很细致。
不过由于我在网络编程这一方面比较薄弱,所以在学习的时候,不得不对其中一些内容进行另外的补充(与前面的序号不是对应的):
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列表可以自行谷歌)
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),欢迎指正)