快递查询,快递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. SCM文章4教训:定时器共阴极LED动态显示屏

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva290ZWlfODhfbHVsdWNfNjY=/font/5a6L5L2T/fontsize/400/fil ...

  2. 【日常学习】【欧拉功能】codevs2296 荣誉的解决方案卫队的一个问题

    转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看看 题目来源:SDOI2008 文章被剽窃非常严重啊 所以以后都带上版权信息 先上题目 题目描 ...

  3. WAP页面点击与hover延迟解决之道

    最近一直在WAP端页面的开发,一直都知道wap端点击相关问题存在延迟.之前做的网页大部分使用a链接进行,一直未入此坑. 最近做的一个WAP网站,各种点击,hover事件,如果使用PC端网页的做法,直接 ...

  4. hibernate 单元測试框架

    hibernate在写数据库配置文件时很的不确定,必须进行必要的測试保证数据库结构的正确性.所以能够应用junit进行測试. 使用junit很easy,eclipse仅仅须要右键项目新建一个junit ...

  5. 比ORA-24777: 我不使用不可移植数据库链接更郁闷的事情达成一致

    现场有一个同步误差,内容如下面:    java.sql.BatchUpdateException: ORA-24777: 不同意使用不可移植的数据库链路    at oracle.jdbc.driv ...

  6. 纯js客服插件集qq、旺旺、skype、百度hi、msn

    原文 纯js客服插件集qq.旺旺.skype.百度hi.msn 客服插件,集qq.旺旺.skype.百度hi.msn 等 即时通讯工具,并可自己添加支持的通讯工具,极简主义,用法自己琢磨.我的博客 h ...

  7. (Chrome42)Lodop总计页面提示“未安装”要么“请升级”可能的原因和解决方案

    Chrome42版本号之后,支持NP态,要手工打开,方法例如以下: 在谷歌浏览器地址栏输入: chrome://flags/#enable-npapi 然后找到"启用NPAPI"地 ...

  8. jdk1.7 变更

    个人实遇: 1.6与1.7 :SimpleDateFormat,1.6要求yyyy必须小写,1.7兼容大小写: jdk 8 新特性: 官方pdf文档(英文版)私人下载地址:http://pan.bai ...

  9. oracle 数据库备份

    //创建临时表空间create temporary tablespace test_temp tempfile 'D:\oracle\data\test\test_temp.dbf' size 32m ...

  10. Android网络通信android-async-http入门

    android-async-http入门 门免费链接分享前:http://pan.baidu.com/s/1mg9SvgO 密码:cgg7 API原文:http://loopj.com/android ...