应用环境:
有商城,需要查询快递。
使用查询快递的工具: 快递100
为什么不用快递鸟? 因为不论我怎么调用都得不到结果,所以只能换换工具了,抱歉、
参数准备: 快递公司编码 快递单号:
884981582257138929
下方网址的产生: 圆通: yuantong 单号就直接复制,整个就是请求的网址
private String url = "http://www.kuaidi100.com/query?type=yuantong&postid=884981582257138929";
开启子线程获取服务器返回的json字符串:
new Thread(new Runnable() { @Override public void run() { try { HttpClient httpClient = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == 200) { HttpEntity entity = httpResponse.getEntity(); String response = EntityUtils.toString(entity, "utf-8"); parseJSON(response); } } catch (Exception e) { e.printStackTrace(); } } }).start();
创建bean类去解析获取的字符串:
这里只需要接收快递的时间 ,地点 就可以了。所以就创建了两个成员变量
public class KD { private String time; private String context; @Override public String toString() { return "KD{" + "time='" + time + '\'' + ", context='" + context + '\'' + '}'; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getContext() { return context; } public void setContext(String context) { this.context = context; } }
解析这个字符串:
private KD kd; private void parseJSON(String jsonData) { try { JSONArray jsonArray = new JSONObject(jsonData).getJSONArray("data"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String time = jsonObject.getString("time"); String context = jsonObject.getString("context"); kd = new KD(); kd.setContext(context); kd.setTime(time); kds.add(kd);//kds 就是一个 List<KD> kds } } catch (Exception e) { e.printStackTrace(); } streamAdapter.addKD(kds); runOnUiThread(new Runnable() { @Override public void run() { streamAdapter.notifyDataSetChanged(); } }); }
在kds中,就是你需要显示的快递的时间和地址的信息。
straeamAdapter 是我的recyclerView的适配器,接收这个list之后刷新赋值。
没有电商ID,没有appkey,直接用