模拟快递100请求 通过快递单号获取物流信息
2015-12-03 20:31
417 查看
需求:只提供快递单号获取物流信息
思路:通过快递100获取
实现:快递100有2个接口,可以模拟请求操作。
1、通过快递单号获取快递公司代码。
2、通过快递公司代码和快递单号获取物流信息。
3、返回的物流信息是JSON格式。将JSON信息转换封装成自己需求的格式。
代码:
请求:
测试:
效果:
思路:通过快递100获取
实现:快递100有2个接口,可以模拟请求操作。
1、通过快递单号获取快递公司代码。
2、通过快递公司代码和快递单号获取物流信息。
3、返回的物流信息是JSON格式。将JSON信息转换封装成自己需求的格式。
代码:
public List<Map<String, String>> queryLogisticsInfoByKuadi100(String trackingNo) { try { if(StringUtils.isBlank(trackingNo)){ return null; } // 1.通过快递单号获取是哪个快递公司。 String typeResult = this.get("http://www.kuaidi100.com/autonumber/autoComNum?text="+trackingNo); JSONObject typeJsonObject = (JSONObject)JSON.parse(typeResult); JSONArray typeDataArray = (JSONArray) typeJsonObject.get("auto"); if(typeDataArray.isEmpty()){ return null; } JSONObject typeObject = (JSONObject)typeDataArray.get(0); String type = typeObject.getString("comCode"); // 2.通过快递公司及快递单号获取物流信息。 String kuaidiResult = this.get("http://www.kuaidi100.com/query?type="+type+"&postid="+trackingNo); JSONObject jsonObject = (JSONObject)JSON.parse(kuaidiResult); String status = jsonObject.getString("status"); if(!"200".equals(status)){ return null; } List<Map<String, String>> list = new ArrayList<Map<String, String>>(); JSONArray dataArray = (JSONArray) jsonObject.get("data"); for (int i = 0; i < dataArray.size(); i++) { Map<String, String> tempMap = new HashMap<String, String>(); JSONObject temp = (JSONObject) dataArray.get(i); tempMap.put("date", (String) temp.get("time")); tempMap.put("logisticsInfo", (String) temp.get("context")); list.add(tempMap); } return list; } catch (Exception e) { e.printStackTrace(); return null; } }
请求:
private String get(String url) throws ClientProtocolException, IOException{ DefaultHttpClient httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager()); HttpGet httpGet = new HttpGet(url); HttpUriRequest request = null; request = httpGet; HttpContext localContext = new BasicHttpContext(); HttpResponse response = httpClient.execute(request, localContext); return EntityUtils.toString(response.getEntity()); }
测试:
public static void main(String[] args) { new LogisticsServiceImpl().queryLogisticsInfoByKuadi100("310788421228"); }
效果:
相关文章推荐
- 如何动态绘制时钟
- 【模板】【bzoj3224】Tyvj 1728 普通平衡树 Splay
- -webkit-text-size-adjust: none;
- 会计等式
- SQL Server系列(9) -- 数据库的安全与备份
- UI基础3 UIControl
- 驱动测试错误集锦
- android 网络异常提示
- Luence 课程1----索引和搜索的建立
- 欢迎使用CSDN-markdown编辑器
- mysql升级
- 差分约束学习(一)POJ1201
- Android 实现调用照相机和选取本地照片功能
- 有穷自动机
- android 的Drawable
- Hint:Parameter 'in' is declared but never used in 'query_student'
- 迭代器
- 随笔1
- python write出现 Non-character array cannot be interpreted as character buffer.
- windows xp 和 ubuntu双系统出现grub,如何设置直接进入双系统选择界面