快递查询,快递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("&nbsp;", " "))
.append(":")
.append(data.getJSONObject(i).getString("context")
.replace("&nbsp;", " ")).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项目---快递查询的更多相关文章

  1. python爬虫练手项目快递单号查询

    import requests def main(): try: num = input('请输入快递单号:') url = 'http://www.kuaidi100.com/autonumber/ ...

  2. Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中

    前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...

  3. 快递查询SDK

    简介: 快递查询的SDK,使用的是快递100的智能查询,此SDK只是中间包装了一层而已,单对于普通的快递业务查询已经足够,也省去开发者研究的时间,拿来即用. 用途: 1.对接微信公众平台 2.对接需要 ...

  4. Android项目实战--手机卫士开发系列教程

    <ignore_js_op> banner131010.jpg (71.4 KB, 下载次数: 0) 下载附件  保存到相册 2 分钟前 上传   Android项目实战--手机卫士01- ...

  5. 快递查询api(多接口方案)

    /** 本环境使用php+smarty,结合两种快递api调取快递数据 * 说明,先快递鸟调取数据,失败后再调取快递网的数据* 快递鸟 http://www.kdniao.com 快递网 http:/ ...

  6. Android项目开发全程(二)--Afinal用法简单介绍

    本篇博文接上篇的<Android项目开发全程(一)--创建工程>,主要介绍一下在本项目中用到的一个很重要的框架-Afinal,由于本系列博文重点是项目开发全程,所以在这里就先介绍一下本项目 ...

  7. 微信小程序(一)快递查询

    2007 年 1 月 9 日,乔布斯在旧金山莫斯科尼会展中心发布了首款 iPhone,而在十年后的 1 月 9 日,微信小程序正式上线.张小龙以这样的形式,向乔布斯致敬. 小程序在哪里? 小程序功能模 ...

  8. Android之——ContentResolver查询的三种方式

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47785491 今天做到一个小项目.查询手机中短信的信息,当然得去系统暴露出来的数据 ...

  9. (转载) android项目大全,总有你所需的

    目录视图 摘要视图 订阅 赠书 | 异步2周年,技术图书免费选      程序员8月书讯      项目管理+代码托管+文档协作,开发更流畅 [置顶] android项目大全,总有你所需的 标签: 源 ...

随机推荐

  1. 编程获取linuxservercpu、内存和磁盘使用

    proc文件系统简介 /proc文件系统是一个伪文件系统.它是唯一的,其中存储器,如果不采取外部存储空间. 它是文件系统提供了与内核进程进行通信的接口的方法.用程序能够通过/proc得到系统的信息.并 ...

  2. RS-232协议和RS-485协议

    RS232 RS232是一种异步传输标准接口.通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现 .RS232最经常使用的连接方式是三根线:一条发送线.一条接 ...

  3. testbench中将外部数据引入输出的方法(转载)

    在进行HDL的仿真测试时,除了用较为直观的波形仿真图像以外,通过编写测试文件testbench进行仿真并将仿真结果保存在对应的文件,显得尤为重要.文件的操作主要用到读和写两种操作. 1. 读操作 读操 ...

  4. UVa 10285 - Longest Run on a Snowboard

    称号:给你一个二维矩阵,找到一个点.每一个可以移动到的位置相邻的上下,求最长单调路径. 分析:贪婪,dp.搜索. 这个问题是一个小样本,我们该怎么办. 这里使用贪心算法: 首先.将全部点依照权值排序( ...

  5. POJ 2777 Count Color(段树)

    职务地址:id=2777">POJ 2777 我去.. 延迟标记写错了.标记到了叶子节点上.. . . 这根本就没延迟嘛.. .怪不得一直TLE... 这题就是利用二进制来标记颜色的种 ...

  6. Base64中文不能加密问题

    最近用到了Base64.js来对url参数进行加密,字母和数字都可以很好地加密/解密. 但测试中文时发现不能进行转换,貌似Base64.js不支持中文字符. 联想到encodeURI()对url的编码 ...

  7. 好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can&#39;t be established. 的问题

    用ssh登录一个机器(换过ip地址),提示输入yes后,屏幕不断出现y,仅仅有按ctrl + c结束 错误是:The authenticity of host 192.168.0.xxx can't ...

  8. 求解决!!!SystemVerilog于ModelSim在编译和执行

    我们正在学习SV流程,样品执行书.. 功能:函数返回数组. Code1: /*书上提供的样例.存在错误,不可执行 function void init(ref int f[5], int start) ...

  9. 直读Innodb datafile

    这两天有空翻了翻大神写的<innodb存储引擎>,手痒亲身实践.由于此书出版了有段时日,没有用其推荐的python工具,通过点滴推敲,略微发现其中冰山一角的奥秘.对于今后对于一些问题查证或 ...

  10. android详细信息java.util.ConcurrentModificationException变态

    在今天做android当项目,我遇到了这个异常,好吧.其实最不寻常遇到异常IllegalstateException.它们与我们的硬件连接SDK抛出,我想折磨学生阿玉啊.扯远了. 今天,我想回到这个异 ...