Retrofit2学习记录

来源:互联网 发布:搜索引擎客户数据分析 编辑:程序博客网 时间:2024/05/18 19:44

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:纯文本,文件扩展名.txttext/html:HTML文本,文件扩展名.htm.htmlimage/jpeg:jpeg格式的图片,文件扩展名.jpgimage/gif:GIF格式的图片,文件扩展名.gifaudio/x-wave:WAVE格式的音频,文件扩展名.wavaudio/mpeg:MP3格式的音频,文件扩展名.mp3video/mpeg:MPEG格式的视频,文件扩展名.mpgapplication/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),欢迎指正)

0 0