android http——网络请求二次封装的框架设计

本文介绍了一种基于现有网络请求框架的二次封装方法,旨在创建一个适用于特定项目的网络请求框架。通过封装请求参数、定义请求接口、处理结果及响应,实现了与第三方框架的低耦合。文中详细阐述了每个步骤,包括准备参数、生成参数Map、定义网络请求接口、封装请求和响应,以及使用枚举发出请求。最终,展示了如何简化请求和接收响应的代码,以提高代码的可读性和可维护性。
摘要由CSDN通过智能技术生成

android app中少不了要用到网络请求。网上已经有很多优秀的网络请求框架,谷歌推荐的okhttp、齐射并发的volley 、异步请求的asynchttp。

但是我要说的并不是重新设计网络请求框架,而是基于所有优秀网络请求框架进行的二次封装,成为一个为自己项目所用的网络请求。

不要问为什么这么做,只要你使用到了网络请求,不管有没有用第三方请求框架都必须为它(网络请求流程处理)再次设计一个简单易用的框架,我们把这个过程叫做网络请求的二次封装。

先来看看一个网络请求的流程:
1,get,post请求数据
请求数据需要url,如果是post请求还需要一个map集合在存储请求参数;
那么就可以把请求数据看作:

String url="http://192.168.1.1:8080/websservice/index/selectindex.action?";
        Map<String,Object> parameters=new HashMap();
        parameters.put("userinfo.name","admin");
        parameters.put("userinfo.password","admins1");

这么一个数据结构。

2,发出请求

private void sendPostRequest(String url, Map<String, Object> params) {
        //首先判断是否有网络
        if (!NetWorkUtil.isNetworkConnected(mContext)) return;
        HttpClient.post(Context, url, params, new HttpBack() {

            @Override
            public void onSuccess(int statusCode, byte[] responseBody) {
                try {
                    String jsonSuccess = new String(responseBody, "UTF-8");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int statusCode, byte[] responseBody, Message error) {
                try {
                    String jsonFinal = new String(responseBody, "UTF-8");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });

这段代码只是模拟一个post网络请求,并且经过一系列的处理返回成功或者失败到相应的接口。

3,处理结果
拿到结果后 我们一般会根据服务器返回的固定字段来解析json数据:

    //状态码
    String TAG_STATUS_CODE = "statusCode";

    //请求失败后的失败内容
    String TAG_MESSAGE = "message";

    //json对象
    String TAG_OBJECT = "object";

    //json集合
    String TAG_OBJECTS = "objects";

通过和服务器返回数据相匹配来解析json并保存到相应的实体类中。

4,显示结果
当我们拿到处理后的结果后要发送给相应的页面用于显示。这时候的处理就“八仙过海各显神通”了。不过最常见的就是通过观察者模式,让结果进入发送者内,然后给所有观察者发送网络请求的处理结果。

这就是一个网络请求的大致流程。其中具体的网络请求网上就有很多优秀的处理框架了。我们也没有必要再去自己写,况且自己写的不一定完美。

所以,我们要做的就是既要用别人的框架也要将别人的框架和自己app的耦合性降到最低。

那么我们应该从什么地方入手呢?
先看一张图:
这里写图片描述

这就是大概的一个接口对接的示意图。
而我们要做的部分就是将红色框,即app内部请求和解析进行二次封装。

—————————————————分割线———————————————–

那么我要说的就是为网络请求流程处理设计的框架。

先来看一张我要讲的网络请求二次封装的框架结构示意图:
这里写图片描述

得到处理过的结果的ResponseResult类(也就是图中的ResponseSuccess等类)可以使用观察者模式向所有的观察者发出请求返回结果。

接下来我们就一步一步的实现这个二次封装的框架。等到成品出来后,各位看客就能感受到它的简单和易用是多么的强大。

1,准备工作

/**
 * 请求的url
 */
public class RequestUrls {
   

    public static final String IP = "http://192.168.1.1:8080/";//url
    public static final String ROOT_URL = IP + "HttpService/";//项目名

    /**
     * 获取首页数据的URL
     */
    public static final String GET_INDEX_CONTENT_URL = ROOT_URL + "index/selectIndexContent.action";

}
/**
 * 服务器返回状态吗
 */
public class StatusCode {
   
    /**
     * 状态码:请求成功
     */
    public static final int REQUEST_SUCCESS = 200;

    /**
     * 状态码:没有更多数据
     */
    public static final int NOT_MORE_DATA = 201;

    /**
     * 状态码:服务器繁忙
     */
    public static final int SERVER_BUSY = 300;

    /**
     * 状态码:未知错误
     */
    public static final int SERVER_ERROR = 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值