Android项目---快递查询
快递查询,快递100上有更多接口信息
1.快递查询的接口是 快递公司的code值+快递单号 进行的网络查询。第一步,怎么将快递公司的名字转换成code值,传递给接口。下面是快递公司以及对应的code值得xml文件。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 快递公司对应代码 -->
<string-array name="ems_code">
<item>yuantong</item>
<item>yunda</item>
<item>shentong</item>
<item>shunfeng</item>
<item>zhongtong</item>
<item>ems</item>
<item>zhaijisong</item>
<item>quanfengkuaidi</item>
<item>rufengda</item>
</string-array> <!-- 快递公司名称 -->
<string-array name="ems_company">
<item>圆通速递</item>
<item>韵达快运</item>
<item>申通快递</item>
<item>顺丰快递</item>
<item>中通速递</item>
<item>EMS</item>
<item>宅急送</item>
<item>全峰快递</item>
<item>如风达</item>
</string-array> </resources>
2.解析xml文件,将获得的公司名变成code值传递给接口连接。
private String[] emsCommpany;//公司名称
private String[] emsCode; // 公司编码名称
private String mCompany_Name;// 公司名称
private String mCompany_Code;// 公司的编码:圆通快递----yuantong emsCommpany = getResources().getStringArray(R.array.ems_company);
emsCode = getResources().getStringArray(R.array.ems_code); mCompany_Code = emsCode[position].toString().trim();// 公司编号
mCompany_Name = emsCommpany[position].toString().trim();// 公司名称
3.对网络进行连接,获取网络数据
/*
* 请加入: 查询前的网络判断 如果手机没有接入网络提示打开网络 如果网络正常再去进行查询 查询的时候 如果getResponseResult
*/
public static String getResponseResult(String httpurl, String format)
throws IOException { URL geturl = new URL(httpurl);
HttpURLConnection connection = (HttpURLConnection) geturl
.openConnection();
connection.setConnectTimeout();// 连接服务器的超时时间
connection.setReadTimeout();// 从服务器读取数据的超时时间
connection.connect();// 默认是GET请求
int code = connection.getResponseCode();
StringBuffer result = new StringBuffer();
if (code == ) {// 如果连接成功
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream(), "UTF-8"));
String lines; while ((lines = reader.readLine()) != null) {
result.append(lines);
}
reader.close();
System.out.println("网络连接正常");
connection.disconnect();
} else {
System.out.println("网络连接异常");
connection.disconnect();
}
connection.disconnect();
return result.toString();
}
3.快递信息进行json数据解析
/**
* 2 解析JSON 得到ExpressInfo对象
*
* @param jsonStr
* @return
*/
public ExpressBean parseJSON(String jsonStr) {
ExpressBean express = new ExpressBean();
// 根据字符串得到JSON对象
try {
JSONObject jsonObj = new JSONObject(jsonStr);
// 取出快递状态 data
JSONArray data = jsonObj.getJSONArray("data");
// 循环取出JSON数组中的对象 得到每一条 快递状态
StringBuffer sb = new StringBuffer();
for (int i = ; i < data.length(); i++) {
sb.append(
data.getJSONObject(i).getString("time")
.replace(" ", " "))
.append(":")
.append(data.getJSONObject(i).getString("context")
.replace(" ", " ")).append("\n");
}
express.setOpt_message(sb.toString());// 把取出的快递状态赋值 String nu = jsonObj.getString("nu");
express.setPost_id(nu);// 把取出的快递单号赋值 String company = jsonObj.getString("com");
express.setCompany(company);// 把取出的快递公司赋值 System.out.println("查询到的信息:" + express.toString());
// 设置一个快递查询的默认查询结果 默认为网络连接失败
express.setRequestCode(Constants.NET_LINK_ERROR); //
} catch (JSONException e) {
System.out.println("JSON解析异常");
}
return express;
}
快递查询中Spinner的使用
除了常规的定义,注册绑定以外,最终要的操作就是在spinner列表中适配数据,以及重写onItemSelectedListener的监听事件
// 实例化spinner
private void initSpinner() {
ArrayAdapter<CharSequence> adapter = ArrayAdapter
.createFromResource(this, R.array.ems_company,
android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setPrompt(getResources().getString(
R.string.input_express_company));
spinner.setOnItemSelectedListener(new SpinnerOnSelectedListener());
} // 创建一个内部类通过公司名字找到对应的编号
class SpinnerOnSelectedListener implements OnItemSelectedListener { @Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// 根据点击的位置找到公司编码的位置
mCompany_Code = emsCode[position].toString().trim();// 公司编号
mCompany_Name = emsCommpany[position].toString().trim();// 公司名称
Log.i("Info", "ems_code:" + mCompany_Code+mCompany_Name);
} /**
* 没有选择的时候,默认圆通快递
*/
@Override
public void onNothingSelected(AdapterView<?> parent) {
mCompany_Code = "yuantong";
} }
Android项目---快递查询的更多相关文章
- python爬虫练手项目快递单号查询
import requests def main(): try: num = input('请输入快递单号:') url = 'http://www.kuaidi100.com/autonumber/ ...
- Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中
前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...
- 快递查询SDK
简介: 快递查询的SDK,使用的是快递100的智能查询,此SDK只是中间包装了一层而已,单对于普通的快递业务查询已经足够,也省去开发者研究的时间,拿来即用. 用途: 1.对接微信公众平台 2.对接需要 ...
- Android项目实战--手机卫士开发系列教程
<ignore_js_op> banner131010.jpg (71.4 KB, 下载次数: 0) 下载附件 保存到相册 2 分钟前 上传 Android项目实战--手机卫士01- ...
- 快递查询api(多接口方案)
/** 本环境使用php+smarty,结合两种快递api调取快递数据 * 说明,先快递鸟调取数据,失败后再调取快递网的数据* 快递鸟 http://www.kdniao.com 快递网 http:/ ...
- Android项目开发全程(二)--Afinal用法简单介绍
本篇博文接上篇的<Android项目开发全程(一)--创建工程>,主要介绍一下在本项目中用到的一个很重要的框架-Afinal,由于本系列博文重点是项目开发全程,所以在这里就先介绍一下本项目 ...
- 微信小程序(一)快递查询
2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...
- Android之——ContentResolver查询的三种方式
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47785491 今天做到一个小项目.查询手机中短信的信息,当然得去系统暴露出来的数据 ...
- (转载) android项目大全,总有你所需的
目录视图 摘要视图 订阅 赠书 | 异步2周年,技术图书免费选 程序员8月书讯 项目管理+代码托管+文档协作,开发更流畅 [置顶] android项目大全,总有你所需的 标签: 源 ...
随机推荐
- VC和gcc在保证功能static对线程安全的差异变量
VC和gcc不同,不能保证静态变量的线程安全性.这就给我们的程序带来了非常大的安全隐患和诸多不便.这一点应该引起我们的重视!尤其是在构造函数耗时比較长的时候.非常可能给程序带来意想不到的结果.本文从測 ...
- mybatis generator插件开发
mybatis现在普遍使用的每一个人DAO框架.mybatis generator它可以基于数据库中的表结构,生成自己主动mybatis代码和配置文件,方便使用,当然,实际的使用过程中.generat ...
- Rabbitmq 加入用户訪控制台(guest无法登陆控制台问题)
对于rabbitmq的guest用户无法訪问控制台的问题,是由于rabbitmq做了安全措施,禁止guest登陆控制台.须要我们自己创建用户进行登陆 1,运行加入用户命令 rabbitmqctl ad ...
- JNDI数据源配置注意事项
假设是在原有project上改动 1,applicationContext.xml中改动当中的value值 <bean id="dataSource" class=" ...
- 左右GNU Linux企业加密文件系统 eCryptfs简介
/********************************************************************* * Author : Samson * Date ...
- i++与++i哪个效率更高
简单的比较前缀自增运算符和后缀自增运算符的效率是片面的, 因为存在很多因素影响这个问题的答案. 首先考虑内建数据类型的情况: 如果自增运算表达式的结果没有被使用, 而是仅仅简单地用于增加一元操作数, ...
- JavaScript之事件处理详解
一.事件传播机制 客户端JavaScript程序(就是浏览器啦)采用了异步事件驱动编程模型.当文档.浏览器.元素或与之相关的对象发生某些有趣的事情时,Web浏览器就会产生事件(event).如果Jav ...
- 使用 CodeIgniter 框架快速开发 PHP 应用(七)
原文:使用 CodeIgniter 框架快速开发 PHP 应用(七) CodeIgniter 和对象这是玩家章节.它讲述的是 CodeIgniter 的工作原理,也就是揭开CI头上'神秘的面纱'.如果 ...
- eclipse 配置android sdk和maven
首先下载 ADT-22.2.0.rar eclipse-jee-kepler-R-win32-x86_64.zip android SDK4.2.zip 分别解压在一个盘 将ADT里面的两个目录内容相 ...
- 1.cocos2dx存储卡的游戏代码、而游戏移植到“华为荣耀”电话、问题的总结移植
1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2 ...