Retrofit扫盲
程序员文章站
2022-05-27 10:33:10
...
Retrofit是什么
- 官方解释:A type-safe HTTP client for Android and Java。说人话就是网络请求的一个封装库。
- 竟然你搜到了这篇文章,那说明至少你大概知道他是干撒的了,就类似google开发的volley库。
Retrofit优势
- 与市面上那么多网络请求库相比,它的优势是使用简单,越用越觉得好用(大家都这么说;)),谁用谁知道:)
Retrofit怎么用
- (接下来说下步骤,先不用全都懂,知道怎么用了,在去分析不懂的知识点)
- 第一步当然是导库,在app/build.gradle文件中
// 这个不必说
api 'com.squareup.retrofit2:retrofit:2.2.0'
// 这个是Retrofit底层需要用的okhttp
api 'com.squareup.okhttp3:okhttp:3.3.1'
// 这个是一种数据转化器,有多种可选
api 'com.squareup.retrofit2:converter-gson:2.1.0'
- 创建接口类(来的有点直接,先装不懂哈)
// 正式项目中,就是一个个接口调用方法
// 有么有注意到这个对象:ResponseBody,一般开发中,我们需要将服务端返回的数据转化成实体对象,哪这里就直接替换为我们定义好的对象即可
// 如果不需要转换Json数据,可以直接返回ResponseBody
// 若需要转换,例如:Call<GsonBean> get***;这样的话,需要添加Gson转换器处理json转换成对象的操作
public interface ApiStores {
@GET("toutiao/index?")
Call<ResponseBody> getDemoNews(@QueryMap Map<String, String> params);
/**
* @param params Get请求,带多个参数的接口
* @return
*/
@GET("toutiao/index?")
Call<NewsBack> getNews(@QueryMap Map<String, String> params);
/**
* @param type Get请求,带一个参数的接口,当然这个跟上一个方法是一样效果,我写在这里是为了便于初学者明白一个参数写法
* @return
*/
@GET("toutiao/index?key=93ed89ccb2c409d1edad583eac67733c")
Call<NewsBack> getNews(@Query("type") String type);
}
- 定义好第二步的接口后,接下来来看如何调用
Retrofit retrofit = new Retrofit.Builder()
// Base URL: 总是以/结尾
// 这里以聚合数据服务来举例
.baseUrl("http://v.juhe.cn/")
// 这里添加json转对象的转换器
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiStores apiStores = retrofit.create(ApiStores.class);
// 添加参数
HashMap<String, String> params = new HashMap<>();
params.put("type", "top");
params.put("key", "93ed89ccb2c409d1edad583eac67733c");
Call<NewsBack> call = apiStores.getNews(params);
// 开启异步请求,注意还有同步请求的功能提供
call.enqueue(new Callback<NewsBack>() {
@Override
public void onResponse(Call<NewsBack> call, retrofit2.Response<NewsBack> response) {
NewsBack back = response.body();
// 这段代码可忽略,实际情况回调进行数据处理刷新UI即可
if (iCallBackListener != null) {
iCallBackListener.callBack(back);
}
}
@Override
public void onFailure(Call<NewsBack> call, Throwable t) {
}
});
- 其实走完上面3步,程序员拿走主意应该算是告一段落,基本上网络数据算是走完流程
其实Retrofit的好用远远不止使用简单这一层。可以衍生的点
- 5.1 结合Rxjava让网络请求更优雅
- 5.2 可以选最有转化器,例如:Jackson、Protobuf等,让网络请求效率更高
- 5.3 添加各种拦截器,让网络请求更顺畅,交互更人性化
等等
参考链接
上一篇: PHP 处理图片的类实现代码_php技巧
下一篇: Session 扫盲
推荐阅读
-
OKHttp3(支持Retrofit)的网络数据缓存Interceptor拦截器的实现
-
Android中Retrofit 2.0直接使用JSON进行数据交互
-
Android如何通过Retrofit提交Json格式数据
-
Android Retrofit的简单介绍和使用
-
Android Retrofit实现多图片/文件、图文上传功能
-
基础扫盲:LED屏笔记本知多少?
-
HDMI接口知识扫盲:HDMI是什么意思以及HDMI接口有什么用?
-
Retrofit Rxjava实现图片下载、保存并展示实例
-
rxjava+retrofit实现多图上传实例代码
-
Retrofit2.0 实现图文(参数+图片)上传方法总结