最近几天闲的发慌,就想着来写点东西出来,之前发布了自己的一个蓝牙开源库,效果还算可以,毫不夸张的即使是蓝牙初学者也可以分分钟上手,主要是因为内部封装的很完善,不需要开发者再去实现什么广播和监听,想要收到硬件的数据回调,也不需要再去手动设置通知那么麻烦,因为这些库中全部都已经做了,开发者仅仅需要初始化的时候注册一个监听,那么所有的关于蓝牙的回调都会拿到,还没有了解该库的朋友可以去看下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地址
网友评论