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使用总结的更多相关文章

  1. Android中的LinearLayout布局

    LinearLayout : 线性布局 在一般情况下,当有很多控件需要在一个界面列出来时,我们就可以使用线性布局(LinearLayout)了,  线性布局是按照垂直方向(vertical)或水平方向 ...

  2. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

  3. Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP)

    之前的博文<Android中使用ExpandableListView实现好友分组>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信 ...

  4. Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)

    昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用Li ...

  5. Android中Fragment和ViewPager那点事儿(仿微信APP)

    在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...

  6. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  7. 【月入41万】Mono For Android中使用百度地图SDK

    借助于Mono For Android技术,.Net开发者也可以使用自己熟悉的C#语言以及.Net来开发Android应用.由于Mono For Android把Android SDK中绝大部分类库都 ...

  8. mono for android中使用dapper或petapoco对sqlite进行数据操作

    在mono for android中使用dapper或petapoco,很简单,新建android 类库项目,直接把原来的文件复制过来,对Connection连接报错部分进行注释和修改就可以运行了.( ...

  9. Android开发学习之路-Android中使用RxJava

    RxJava的核心内容很简单,就是进行异步操作.类似于Handler和AsyncTask的功能,但是在代码结构上不同. RxJava使用了观察者模式和建造者模式中的链式调用(类似于C#的LINQ). ...

随机推荐

  1. .net MVC中异常日志

    在日常工作中,我们有些项目可能进入了维护期,但是项目可能存在一些潜伏较深的bug导致我们在测试阶段并未发现,那么错误日志记录为我们的项目维护起着重要的作用.记录系统日志的方法如下 1.在系统根目录建立 ...

  2. tar 解压bz2报错 Cannot exec: No such file or directory

    tar: bzip2: Cannot exec: No such file or directorytar: Error is not recoverable: exiting now 需要安装bzi ...

  3. 在布局文件中使用Fragment的步骤

    为了在Activity布局文件中使用Fragment我们需要四个步骤. 1.定义一个Activity,他继承android.support.v4.app.FragmentActivity,下面是关键代 ...

  4. MySQL复制和集群

    一.复制配置 (A) 主从服务器相同版本的数据库 (B) 主服务器上复制使用的账户,具有相应的权限. (C) 修改主服务器的配置文件my.cnf,开启BINLOG,并设置server-id的值.重启后 ...

  5. Visual Studio 默认保存为UTF8编码

    Visual Studio (中文版)默认保存的文本文件是GB2312编码(代码页936)的,默认的行尾(End of line)是CRLF的. 如果仅仅是在windows下开发问题也不大,但是涉及到 ...

  6. mac pods 安装

    CocoaPods的安装步骤: 1.先配置Ruby环境: 若已安装Ruby,请升级Ruby环境 sudo gem update --system 若没有安装,则请看下面, 以下代码区域,带有 $ 打头 ...

  7. 为WIN8 APP创建置顶desktop应用

    Windows 8: TopMost window   I am working on my next ambitious project “MouseTouch” which is multi to ...

  8. js之iframe子页面与父页面通信

    iframe子页面与父页面通信根据iframe中src属性是同域链接还是跨域链接,通信方式也不同. 一.同域下父子页面的通信 父页面parent.html <html> <head& ...

  9. dubbo升级spring4与cxf

    阿里的dubbo项目是基于spring2.x的.但之后停止更新了.当当网有根据dubbo扩展成dubbox,基于spring3.x,但我的项目中用的是spring4.x,于是fork了dubbox,自 ...

  10. url带#号,微信支付那些坑

    现在前端很多框架的前端路由都带#号,主要为了做到无刷新跳转页面. 在微信公众号做微信支付时,配置的支付路径比如是http://www.eee.com/#/order,在调微信支付的方法时错误信息是'U ...