import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class A {
public static void main(String[] args) {
List<Map<String, String>> list = queryLogisticsInfoByKuadi100("1125385885101");
System.out.println(list);
}
private static 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 List<Map<String, String>> queryLogisticsInfoByKuadi100(
String trackingNo) {
try {
if (StringUtils.isBlank(trackingNo)) {
return null;
}
// 1.通过快递单号获取是哪个快递公司。
String typeResult = 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 = 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;
}
}
}
结果:
[
{
"date": "2018-11-19 19:46:50",
"logisticsInfo": "[北京市]投递并签收,签收人:他人收"
}, {
"date": "2018-11-18 11:12:23",
"logisticsInfo": "[北京市]到达 处理中心"
}, {
"date": "2018-11-18 01:55:03",
"logisticsInfo": "离开南通市 发往北京北京市"
}, {
"date": "2018-11-13 10:55:25",
"logisticsInfo": "[南通市]已离开南通,发往南通转运中心"
}, {
"date": "2018-11-13 04:31:00",
"logisticsInfo": "[南通市]已收件"
}
]