您的位置:首页 > 其它

模拟快递100请求 通过快递单号获取物流信息

2015-12-03 20:31 417 查看
需求:只提供快递单号获取物流信息

思路:通过快递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");
}


效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: