Android中Retrifit使用总结
Android中网络请求框架Retrofit的使用注意事项
1.Retrofit是基于OkHttp网络请求框架的二次封装而已,懂Okhttp的小伙伴,那么Retrofit也就基本都会。
2.Retrofit采用注解配置请求的方式:
以@GET(get请求)和@POST(post请求)两种方式
@Query,表示请求上一个请求参数
@QueryMap,表示请求上多个请求参数
3.Retrofit采用框架初始化请求方式:有一个call,表示异步请求线程。
具体的代码详见如下:
第一,写一个对应对象的javabean,我相信小伙伴们都会,不多说,此处以Object为例来说明
第二,在一个单独的类中去写请求地址的标识符号,便于后期项目的维护,代码如下:
public class ApiUrls {
//app主页类型标识符
public static final String HOME="home";
}
第三,写一个请求主页地址api的接口:代码如下:
public interface XiaoKeApi {
//请求主页地址的方法
@GET(ApiUrls.HOME)
Call<Object> getHomeData();
}
第四,简单封装Retrofit,代码如下:
public class HttpUtils {
private static XiaoKeApi xiaokeApi;
public static XiaoKeApi getApi() {
if (xiaokeApi == null) {
//初始化retrofit框架
Retrofit build = new Retrofit.Builder()
//1.配置主机地址
.baseUrl("http://192.168.xxoo.xxoo.8080/XiaoKeService/")
//2.解析json的工具
.addConverterFactory(GsonConverterFactory.create(new Gson())).build();
//读取接口上面的参数
xiaokeApi = build.create(XiaoKeApi.class);
}
return xiaokeApi;
}
第五,封装一个简单的回调callBack方法:方便解析json数据,代码如下:
public class SimpleCallBack implements Callback<Object> {
@Override
public void onResponse(Call<Object> call, Response<Object> response) {
Object body = response.body();
String json = body.data;
if (TextUtils.isEmpty(json)) {
showError(0, new RuntimeException("亲!取得数据为空"));
} else {
showData(1, json);
}
}
@Override
public void onFailure(Call<Object> call, Throwable t) {
t.printStackTrace();
showError(-1, t);
}
protected void showError(int i, Throwable t) {
}
protected void showData(int i, String json) {
}
注意:这里的showError和showData两个方法,是需要在使用的类中,自己做业务逻辑处理
第六,在真正使用的类中添加如下代码,即可完成Retrofit的网络请求过程:
public void onClick() {
Call<Object> call = HttpUtils.getApi().getHomeData();
//Callback数据返回处理对象http://www.90168.org/
SimpleCallBack callback=new SimpleCallBack(){
@Override
protected void showError(int i, Throwable t) {
super.showError(i, t);
---
}
@Override
protected void showData(int i, String json) {
super.showData(i, json);
HomeData data= http://blog.csdn.net/u014745194/article/details/new Gson().fromJson(json,HomeData.class);
---
}
};
call.enqueue(callback);
}
致辞,Retrofit的网络请求框架的封装已经完成,谢谢读者观看,再见!
Android中Retrifit使用总结的更多相关文章
- Android中的LinearLayout布局
LinearLayout : 线性布局 在一般情况下,当有很多控件需要在一个界面列出来时,我们就可以使用线性布局(LinearLayout)了, 线性布局是按照垂直方向(vertical)或水平方向 ...
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)
之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...
- Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)
昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用Li ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- 【月入41万】Mono For Android中使用百度地图SDK
借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...
- mono for android中使用dapper或petapoco对sqlite进行数据操作
在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...
- Android开发学习之路-Android中使用RxJava
RxJava的核心内容很简单,就是进行异步操作.类似于Handler和AsyncTask的功能,但是在代码结构上不同. RxJava使用了观察者模式和建造者模式中的链式调用(类似于C#的LINQ). ...
随机推荐
- java从基础知识(九)I/O
java中的流可以从不同的角度进行分类 按流的方向:输入流.输出流(注意这里的输入(read).输出是相对于程序而言的(writer),个人认为从读.写角度理解更为直观) 按处理数据单位:字节流.字符 ...
- RecyclerView各种报错
昨天有人提到RecyclerView,于是我就照着官方的文档研究了下使用方法,结果发现示例代码有问题真是醉. 自己修改后编译是没有问题的但是运行的时候总是报错,大意就是提示找不到RecyclerVie ...
- ArcGIS 10.1 BUG记录
声明:笔者使用ARCGIS 10.1 XXX版,YYY版可能没有此处描写的问题 1. 关于注册数据库 发布启用FA的服务,需要为数据库进行ArcGIS Server注册,若通过ArcMap执行注册,会 ...
- Python初识(一)
首先我有编程语言的基础,你也有就最好了,这样会很快认识Python. 当然由于本人见识和学识的局限性,请广大猿/媛们多多包涵与指正(希望多评论哦),共同进步嘛. ◆ 准备环境:到python官网下载p ...
- Yii2 时间控件之把layDate做成widget
实现效果如下 1.把layDate封装成Yii2的widget,存在 "\common\widgets"目录下,命名为DycLayDate,具体引用查看代码. 2.对应的model ...
- C#单例模式的多种写法
它的主要特点不是根据客户程序调用生成一个新的实例,而是控制某个类型的实例数量-唯一一个.(<设计模式-基于C#的工程化实现及扩展>,王翔).也就是说,单例模式就是保证在整个应用程序的生命周 ...
- (转)Redis使用场景及使用经验
Redis is an open source (BSD licensed), in-memory data structure store! 刚刚结束一个游戏类的活动项目,由于预估的参与人数较多,产 ...
- WPF 如何画一颗心
如何用WPF画一个心. MainWindow.xaml <Window x:Class="Heart.MainWindow" xmlns="http://schem ...
- Linux中不同主机建立免登陆
ssh-keygen -t rsa scp /root/.ssh/id_rsa.pub root@192.168.0.236:/root/.ssh/authorized_keys cat /root ...
- AngularJS 相关小问题解决方案合集
1 解决 Select选择框遍历时,出现一个空白选项: <select style="width: 20%;margin-left: 5px;height: 31px;" ...