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框架,敬请期待!
- Android-BaseLine框架初识之网络请求(一)
- Android-BaseLine框架初识之如何使用(二)
- android网络框架OkHttp之get请求(源码初识)
- android网络框架OkHttp之get请求(源码初识)
- Android-BaseLine框架初识之MVP模式最佳方案(三)
- Android网络请求框架之Retrofit(一)
- android 网络请求框架总结(一)
- Android/Java网络加载框架Retrofit(一)初识
- Android ORM框架之GreenDAO(一) 初识
- android Volley请求网络框架的使用(一)
- Android架构设计02-网络请求框架(一)
- Android网络请求框架剖析一、Okhttp
- Android开源项目之(网络请求框架)
- Android自定义框架之网络请求
- Android自定义框架之网络请求 .
- Android网络请求框架之Retrofit(二)
- Android网络请求框架之Retrofit(三)
- android开发之网络请求框架比较
- VisionMobile:2015年Android使用的全球趋势(三)游戏很流行,但Facebook最普遍
- MyEclipse 破解后导致无法导出war包问题解决
- 如何在myeclipse中打开系统下文件位置
- lintcode: Reverse Linked List
- 有人向我反馈了一个bug
- Android-BaseLine框架初识之网络请求(一)
- Setting up CocoaPods master repo
- Offscreen Rendering and Multisampling With OpenGL
- 一个四位数的9倍仍然是四位数,但是数字次序相反,编程求此四位数
- 技术实战:基于 MHA 方式实现 MySQL 的高可用
- TCP、UDP、IP 协议分析
- JDK和Tomcat官网下载,包含各个历史版本
- studio so库和jar包冲突
- 简述c#之sealed 修饰符