之前总结过一篇关于Android-BaseLine框架的介绍,还没看过的同学请移步Android-BaseLine基础性开发框架。本篇会介绍Android-BaseLine的基本使用方法-网络请求。
现在做App开发和服务器接口(API)已经分不开了,可以说纯单机版的App几乎绝迹,所以对于我们广大的开发者来说,经常做的就是拿着一份接口文档和UI设计图开始撸代码。那么今天Android-BaseLine框架就给大家带来一个极其简便和规范的方法,来快速的完成接口的抒写。
在开始学习之前,我们建立一个简单的Demo,只包含一个Activity,在Activity里面加入一个按钮,当点击按钮的时候以HTTP协议去请求一段数据。
返回的数据格式
使用的是百度的API Store提供的API,地址在此:手机号码归属地__API服务_API服务_API Store.
Activity代码如下:
public class TestActivity extends BasicActivity{
private ModuleLogic moduleLogic;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
moduleLogic = new ModuleLogic(this);
// 网络请求
findViewById(R.id.net_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showProgress("handling...");
moduleLogic.testNet();
}
});
}
@Override
public void onResponse(Message msg) {
super.onResponse(msg);
switch (msg.what)
{
case R.id.testNet:
hideProgress();
if (checkResponse(msg))
{
InfoResult infoResult = (InfoResult)msg.obj;
JSONObject retData = (JSONObject)infoResult.getExtraObj();
showToast(retData.toJSONString());
}
break;
}
}
}
代码应该很简单,给按钮注册一个点击事件,点击之后调用一段方法,让我们看下ModuleLogic的代码是如何的,代码如下:
public class ModuleLogic extends BaseLogic {
public ModuleLogic(Object subscriber) {
super(subscriber);
}
public void testNet()
{
// 805ba6b0b186fe263c77d4e352d1e605
InfoResultRequest request = new InfoResultRequest(R.id.testNet, "http://apis.baidu.com/apistore/mobilenumber/mobilenumber?phone=15210011578",
new NetParser(), this);
Map<String, String> headers = new HashMap<>();
headers.put("apikey", "805ba6b0b186fe263c77d4e352d1e605");
request.addHeaders(headers);
sendRequest(request);
}
}
testNet方法是请求百度API的一段封装,让我们看下这段方法:
第一步:
new一个InfoResultRequest对象,这个类的构造方法需要4个参数:
int requestId:请求的唯一标示,我们在values目录下新建一个ids.xml,内容如下
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="testNet" type="id"/>
</resources>
String url:请求的URL地址,此方法是GET方式,POST后续会介绍
ResponseParserListener parseListener:对返回的结果的处理器
ILogic logic:传this即可
第二步:
调用sendRequest方法,将第一步的request对象传入即可
至此,网络请求的方法已经结束,接下来大家应该都知道要干啥?那就是结果如何回调给Activity呢,我们继续往下走,关键代码就是Activity的这个方法:
public void onResponse(Message msg)
Message就是Android里面类,我们巧妙的使用了msg.what属性,来区分某个具体的网络请求标识,还记得第一步中的requestId吗?此处就是判断是否一致,代表是调用的testNet方法(因为一个Activity可能有多个网络请求)。
使用起来是不是很简单,无需定义各种回调,其他接口可以直接Copy方法testNet,我们再来回顾一遍:
1、ids.xml新建一个id
2、组织好URL地址和请求参数
3、新建一个解析器(后面会介绍)
4、Activity重写onResponse方法,处理Message即可
下片文章会介绍如何集成Android-BaseLine框架,敬请期待!