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请求返回了数据