封裝自己的簡易HTTP網(wǎng)絡(luò)加載之路(一)

最近幾天閑的發(fā)慌,就想著來寫點東西出來,之前發(fā)布了自己的一個藍(lán)牙開源庫,效果還算可以,毫不夸張的即使是藍(lán)牙初學(xué)者也可以分分鐘上手,主要是因為內(nèi)部封裝的很完善,不需要開發(fā)者再去實現(xiàn)什么廣播和監(jiān)聽,想要收到硬件的數(shù)據(jù)回調(diào),也不需要再去手動設(shè)置通知那么麻煩,因為這些庫中全部都已經(jīng)做了,開發(fā)者僅僅需要初始化的時候注冊一個監(jiān)聽,那么所有的關(guān)于藍(lán)牙的回調(diào)都會拿到,還沒有了解該庫的朋友可以去看下Github地址。接下來言歸正傳,咱們進(jìn)入今天的主題,如何實現(xiàn)自己的HTTP網(wǎng)絡(luò)加載功能呢,這個是個小DEMO,僅僅是為了初學(xué)者更好的學(xué)習(xí)而已,不建議實際項目中使用,畢竟不夠完善。說的再多沒什么用,那么不如先來看下效果:

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、取消對應(yīng)的http請求

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

以上就是該網(wǎng)絡(luò)加載的簡易用法,內(nèi)部已經(jīng)自動進(jìn)行解析,并且可以針對自己服務(wù)器的返回數(shù)據(jù)格式進(jìn)行定制,目前的不足之處就是還沒有做網(wǎng)絡(luò)加載緩存,網(wǎng)絡(luò)攔截,還有就是目前只是簡單寫了兩種請求方式,即POST和GET,所以對于比較小的項目還是比較適合的。
感興趣的可以到github上下載源碼哦
Github地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容