|
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911如有疑问,请加入官方群询问
您需要 登录 才可以下载或查看,没有帐号?关闭注册
x
首先感谢快递100提供的快递单号查询平台
但是接口什么的限制挺大的,所以呢我就抓包分析了一下查询的流程。
下面提供抓包思路和实现方法,暂时没时间去封装成类库,有时间会回来补上的,进入正题。
首先访问
http://www.kuaidi100.com/autonumber/auto?num=快递单号 返回 [mw_shl_code=javascript,true][
{
"comCode": "yunda",
"id": "",
"noCount": 613958,
"noPre": "3100",
"startTime": ""
},
{
"comCode": "huitongkuaidi",
"id": "",
"noCount": 4179,
"noPre": "3100",
"startTime": ""
},
{
"comCode": "bpostinter",
"id": "",
"noCount": 207,
"noPre": "3100",
"startTime": ""
},
{
"comCode": "ems",
"id": "",
"noCount": 30,
"noPre": "3100",
"startTime": ""
},
{
"comCode": "tnt",
"id": "",
"noCount": 20,
"noPre": "3100",
"startTime": ""
}
][/mw_shl_code]
上面的数据是查询框的下拉数据,也就是快递100的物流单号猜想,取出"comCode"的值,按顺序从上往下List<string>储存起来备用
接下来访问 http://www.kuaidi100.com/query?type=快递类型&postid=快递单号 返回 [mw_shl_code=javascript,true]{
"nu": "3100200998006",
"message": "ok",
"companytype": "yunda",
"ischeck": "1",
"com": "yunda",
"updatetime": "2015-02-26 17:53:17",
"status": "200",
"condition": "F00",
"codenumber": "3100200998006",
"data": [
{
"time": "2015-02-06 17:18:55",
"context": "到达:湖南郴州公司 由 图片 签收",
"ftime": "2015-02-06 17:18:55"
},
{
"time": "2015-02-06 16:39:33",
"context": "到达:湖南郴州公司 指定:黄鹏(18175732267) 派送",
"ftime": "2015-02-06 16:39:33"
},
{
"time": "2015-02-06 11:11:08",
"context": "到达:湖南郴州公司 指定:黄鹏(18175732267) 派送",
"ftime": "2015-02-06 11:11:08"
},
{
"time": "2015-02-06 10:18:46",
"context": "到达:湖南郴州公司 上级站点:湖南长沙分拨中心 发往:",
"ftime": "2015-02-06 10:18:46"
},
{
"time": "2015-02-05 17:09:20",
"context": "到达:安徽巢湖公司 由 图片 签收",
"ftime": "2015-02-05 17:09:20"
},
{
"time": "2015-02-05 16:39:26",
"context": "到达:湖南长沙分拨中心 发往:湖南郴州分拨点",
"ftime": "2015-02-05 16:39:26"
},
{
"time": "2015-02-04 19:55:25",
"context": "到达:湖南长沙分拨中心 上级站点:",
"ftime": "2015-02-04 19:55:25"
},
{
"time": "2015-02-04 19:54:44",
"context": "到达:湖南长沙分拨中心 上级站点:上海分拨中心",
"ftime": "2015-02-04 19:54:44"
},
{
"time": "2015-02-03 21:50:19",
"context": "到达:上海分拨中心 发往:湖南长沙分拨中心",
"ftime": "2015-02-03 21:50:19"
},
{
"time": "2015-02-03 21:47:51",
"context": "到达:上海分拨中心",
"ftime": "2015-02-03 21:47:51"
},
{
"time": "2015-02-03 19:51:04",
"context": "到达:上海松江区新桥公司阿芙化妆品淘宝服务部 已收件",
"ftime": "2015-02-03 19:51:04"
},
{
"time": "2015-02-03 19:01:45",
"context": "到达:上海松江区新桥公司阿芙化妆品淘宝服务部 发往:湖南长沙分拨中心",
"ftime": "2015-02-03 19:01:45"
},
{
"time": "2015-02-03 18:45:02",
"context": "到达:上海松江区新桥公司阿芙化妆品淘宝服务部 已收件",
"ftime": "2015-02-03 18:45:02"
}
],
"state": "3"
}[/mw_shl_code]
访问参数的快递类型就是上面的comcode,猜想从第一个开始访问测试,如:yunda,返回的数据status值为200则说明查询成功,如果非200则跳过第一个猜想comcode值,用下一个comcode值再次访问得到结果,依次推类。
下为官网对返回数据的解释,有出处自行取舍: 字段名称
| 字段含义
| com
| 物流公司编号
| nu
| 物流单号
| time
| 每条跟踪信息的时间
| context
| 每条跟综信息的描述
| state
| 快递单当前的状态 :
0:在途,即货物处于运输过程中;
1:揽件,货物已由快递公司揽收并且产生了第一条跟踪信息;
2:疑难,货物寄送过程出了问题;
3:签收,收件人已签收;
4:退签,即货物由于用户拒签、超区等原因退回,而且发件人已经签收;
5:派件,即快递正在进行同城派件;
6:退回,货物正处于退回发件人的途中;
| status
| 查询结果状态:
0:物流单暂无结果,
1:查询成功,
2:接口出现异常,
| message
| 无意义,请忽略
| condition
| 无意义,请忽略
| ischeck
| 无意义,请忽略
|
到这里基本上就结束了,剩下的就是对数据的处理了。
|
|