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

之前总结过一篇关于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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值