封装自己的简易HTTP网络加载之路(一)

字数 473阅读 156

最近几天闲的发慌,就想着来写点东西出来,之前发布了自己的一个蓝牙开源库,效果还算可以,毫不夸张的即使是蓝牙初学者也可以分分钟上手,主要是因为内部封装的很完善,不需要开发者再去实现什么广播和监听,想要收到硬件的数据回调,也不需要再去手动设置通知那么麻烦,因为这些库中全部都已经做了,开发者仅仅需要初始化的时候注册一个监听,那么所有的关于蓝牙的回调都会拿到,还没有了解该库的朋友可以去看下Github地址。接下来言归正传,咱们进入今天的主题,如何实现自己的HTTP网络加载功能呢,这个是个小DEMO,仅仅是为了初学者更好的学习而已,不建议实际项目中使用,毕竟不够完善。说的再多没什么用,那么不如先来看下效果:

1、GET请求

findViewById(R.id.get).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            currentTag = 1;
            LLHttpManager.doNetGet(currentTag, "https://www.baidu.com", new LLNetCallback() {
                @Override
                public void onSuccess(int tag, String entity) {
                    Toast.makeText(MainActivity.this,entity,Toast.LENGTH_LONG).show();
                }

                @Override
                public void onFailure(int tag, String msg, int code) {
                    Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_LONG).show();
                }
            });
        }
    });

2、简单的POST请求

 findViewById(R.id.postSimple).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            currentTag = 2;
            String url = "http://media.e-toys.cn/api/user/loginByMobile";
            Map<String,String> params = new HashMap<String, String>();
            params.put("mobile", "18682176281");
            params.put("password","e10adc3949ba59abbe56e057f20f883e");
            LLHttpManager.getInstance().doSimpleNetPost(currentTag, url, params, new LLNetCallback() {

                @Override
                public void onFailure(int tag, String msg, int code) {
                    Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_LONG).show();
                }

                @Override
                public void onSuccess(int tag, String data) {
                    Log.e(TAG, "onSuccess: "+data);
                    Toast.makeText(MainActivity.this,"请求成功",Toast.LENGTH_LONG).show();
                }
            });
        }
    });

3、返回实体对象的的POST请求

 findViewById(R.id.postBean).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            currentTag = 3;
            String url = "http://media.e-toys.cn/api/user/loginByMobile";
            Map<String,String> params = new HashMap<String, String>();
            params.put("mobile", "18682176281");
            params.put("password","e10adc3949ba59abbe56e057f20f883e");
            LLHttpManager.getInstance().doBeanNetPost(currentTag, url, params, new LLBeanNetCallback<User>() {

                @Override
                public void onFailure(int tag, String msg, int code) {
                    Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_LONG).show();
                }

                @Override
                public void onSuccess(int tag, LLResponse<User> data) {
                    Log.e(TAG, "onSuccess: "+data.getVo().user_name);
                    Toast.makeText(MainActivity.this,"请求成功",Toast.LENGTH_LONG).show();
                }
            });
        }
    });

4、返回列表对象的的POST请求

findViewById(R.id.postList).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            currentTag = 4;
            String url = "http://media.e-toys.cn/api/user/devices";
            HashMap<String,String> params = new HashMap<>();
            params.put("token",token);
            LLHttpManager.getInstance().doListNetPost(currentTag, url, params, new LLListNetCallback<Device>() {

                @Override
                public void onFailure(int tag, String msg, int code) {
                    Toast.makeText(MainActivity.this,"请求失败",Toast.LENGTH_LONG).show();
                }

                @Override
                public void onSuccess(int tag, LLListResponse<Device> data) {
                    Log.e(TAG, "onSuccess: "+ data.getList().size());
                    Toast.makeText(MainActivity.this,"请求成功",Toast.LENGTH_LONG).show();
                }

            });
        }
    });

5、取消对应的http请求

findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(currentTag > 0){
                LLHttpManager.cancelHttp(currentTag);
            }
        }
    });

以上就是该网络加载的简易用法,内部已经自动进行解析,并且可以针对自己服务器的返回数据格式进行定制,目前的不足之处就是还没有做网络加载缓存,网络拦截,还有就是目前只是简单写了两种请求方式,即POST和GET,所以对于比较小的项目还是比较适合的。
感兴趣的可以到github上下载源码哦
Github地址

推荐阅读更多精彩内容