最近幾天閑的發(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地址