2.Restful请求的处理-框架

【说明】首先要考虑网络请求的参数(url传入的值、文件、回调、及loder加载圈)

【说明】使用建造者模式,将建造者类和宿主类分开;

2.1【新建建造者类】

2.2【restClient类的参数的定义】

【restClient类的参数的定义】restClient类在每次Builder的时候会生成全新的实例,而里面的参数一次更改完毕,不允许二次更改;

2.3 【回调类】

【回调类】在网路请求之后,会存在网络请求之后的回调,比如:请求失败、请求异常、请求成功等;

[新建CallBack包,书写需要调用的接口]

2.4 完善RestClient

【完善com.flj.latte.net.RestClient】以Builder的形式构造出来了;

2.5 RestClientBuilder 对数据的设置

【说明】主要完成的数据的传递

2.6 RestClient的调用

2.7 RestClientBuilder的改进

2.7.1【改进1】【mParams】参数每次都会构建,比较繁琐;

【优化1】

【优化方法2】

【client修改】

2.8 requset请求

【新建callBack类】新建类并实现实现接口, 复写方法;

【部分源码】com.flj.latte.net.callback.RequestCallbacks

 1 package com.flj.latte.net.callback;2 3 import android.os.Handler;4 5 import com.flj.latte.app.ConfigKeys;6 import com.flj.latte.app.Latte;7 import com.flj.latte.net.RestCreator;8 import com.flj.latte.ui.loader.LatteLoader;9 import com.flj.latte.ui.loader.LoaderStyle;
10
11 import retrofit2.Call;
12 import retrofit2.Callback;
13 import retrofit2.Response;
18
19 public final class RequestCallbacks implements Callback<String> {
20
21     private final IRequest REQUEST;
22     private final ISuccess SUCCESS;
23     private final IFailure FAILURE;
24     private final IError ERROR;
25     private final LoaderStyle LOADER_STYLE;
26     private static final Handler HANDLER = Latte.getHandler();
27
28     public RequestCallbacks(IRequest request, ISuccess success, IFailure failure, IError error, LoaderStyle style) {
29         this.REQUEST = request;
30         this.SUCCESS = success;
31         this.FAILURE = failure;
32         this.ERROR = error;
33         this.LOADER_STYLE = style;
34     }
35
36     @Override
37     public void onResponse(Call<String> call, Response<String> response) {
38         if (response.isSuccessful()) {
39             if (call.isExecuted()) {
40                 if (SUCCESS != null) {
41                     SUCCESS.onSuccess(response.body());
42                 }
43             }
44         } else {
45             if (ERROR != null) {
46                 ERROR.onError(response.code(), response.message());
47             }
48         }
49
50         onRequestFinish();
51     }
52
53     @Override
54     public void onFailure(Call<String> call, Throwable t) {
55         if (FAILURE != null) {
56             FAILURE.onFailure();
57         }
58         if (REQUEST != null) {
59             REQUEST.onRequestEnd();
60         }
61
62         onRequestFinish();
63     }

【完善RestClient】

2.9 使用方法

【测试】

【增加权限】

【测试】

【效果】通过get请求返回了数据

云炬Android开发笔记 5-3,4Restful请求的处理相关推荐

  1. 云炬Android开发笔记 3-2字体图标库集成与封装

    1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...

  2. 云炬Android开发笔记 3-1项目架构初始化

    一.项目架构初始化 1.我们的应用只有一个activity,它里面是多个fragment进行切换的,这样的好处是应用会非常顺滑,并且一个activity也可以进行很多全局的处理. 在类前加上final ...

  3. 云炬Android开发笔记 11主界面-商品分类开发(多布局Section RecyclerView)

    阅读目录 1. 分类页面结构解析和开发 1.1 布局的创建 1.2 布局的逻辑组合 2. 分类左侧列表数据解析与UI呈现 2.1 数据的转换 2.2[完善list列表逻辑] 3.多布局Section列 ...

  4. 云炬Android开发笔记 4单Activity界面架构设计与验证

    1.4-2本应用没有使用多个activity进行界面的展示,而是通过一个activity管理多个fragment来进行处理. fragment里面有很多坑,推荐使用开源库fragmentation. ...

  5. 云炬Android开发笔记 6启动图功能开发与封装

    阅读目录 1.启动图功能开发与封装(倒计时效果) 2. 持久化 3.倒计时工具库封装 4.第一个启动页面的倒计时 5.启动图功能开发与封装(轮播效果) 5.1 轮播图片的添加 5.2 指示器的添加 6 ...

  6. 云炬Android开发笔记 2-1项目初始化

    一.项目基础 1.创建项目 修改完成后 2.修改具体项目的module名字 3.创建annotationmodule,一定要选择javalibrary.因为它的注解里面会使用很多标准的Java sdk ...

  7. 云炬Android开发笔记 17商品详情功能开发

    阅读目录 1.商品详情ui框架设计 1.1 自定义圆形控件 1.2 底部栏的布局 1.3 整体布局 2.商品详情UI-MD风格伸缩渐变效果实现 2.1 ui的绑定 2.2 服务器中商品详情页的数据的取 ...

  8. 云炬Android开发笔记 16附加功能开发(二维码,一键分享,分页,搜索)

    阅读目录 1.二维码高性能解决方案 1.1推荐的库的使用 1.2 扫描到数据回调的处理 2. 一键分享功能的使用 2.1 第三方功能的使用 2.2 逻辑增加 2.3 编译测试 3.分页功能实现  4. ...

  9. 云炬Android开发笔记 15评价晒单功能实现(自定义评分控件和仿微信自动多图选择控件)

    阅读目录 1. 晒单评价 1.1 点击页面跳转的实现 1.2 自定义评价订单的布局实现 1.3 星星布局的实现 2. 仿微信自动多图及删除控件 2.1 属性值及控件的定义 2.2 图片初始化方法onM ...

最新文章

  1. 364 页 PyTorch 版《动手学深度学习》PDF 开源了(全中文,支持 Jupyter 运行)
  2. vs2013+EF6+Mysql
  3. netcore一键部署到linux服务器以服务方式后台运行
  4. AWS上的应用程序自动扩展–选项及其对性能的影响
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 8丨平面上的最近距离【难度中等】
  6. Java LinkedHashMap clear()方法与示例
  7. 微信群接龙报名小程序功能模块源码V1.1.38
  8. Skin++ 使用教程(VC软件外观美化工具)
  9. apache geode项目结构_使用IntelliJ IDEA+Maven 创建、开发、管理项目
  10. WPF DataGrid 获取选中的当前行某列值
  11. 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 858期】
  12. 在Matlab安装Vlfeat
  13. 阿里巴巴矢量图标库的引入——symbol类型的使用——阿里图标组件封装
  14. 应急响应入侵排查之第二篇Linux
  15. 如何在系统设置mysql环境变量(win11)
  16. msdia 80.dll的正确位置
  17. c++ 计算多图形面积
  18. cmake find_package 原理简介以及使用说明
  19. android 画圆形 bitmap,在android中画圆形图片的几种办法
  20. 【PANDA教程】PANDA详细教程笔记

热门文章

  1. 处理Xcode8输出无用的Log信息
  2. 巨头的转身 ARM阵营开始烧英特尔的后院
  3. Intel格式和ATT格式汇编区别
  4. IPsec-×××基本技术挖掘
  5. BuildIt: Visual Studio .NET 的自动生成工具
  6. 垃圾代码评析——关于《C程序设计伴侣》9.4——链表(四)
  7. 在JavaScript中遭遇级联表达式陷阱
  8. 蓝桥杯-算法训练 2的次幂表示
  9. 关于C++中vector初始化问题
  10. nylgacm_1057_寻找最大数(三)