Android-BaseLine框架初识之网络请求(一)

来源:互联网 发布:c语言else语句格式 编辑:程序博客网 时间:2024/04/28 23:37

之前总结过一篇关于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框架,敬请期待!

0 0
原创粉丝点击