android砖头之:快递即时查询

应用环境:

有商城,需要查询快递。

使用查询快递的工具:  快递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 kds
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    streamAdapter.addKD(kds);
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            streamAdapter.notifyDataSetChanged();
        }
    });
}

在kds中,就是你需要显示的快递的时间和地址的信息。

straeamAdapter 是我的recyclerView的适配器,接收这个list之后刷新赋值。

没有电商ID,没有appkey,直接用










你可能感兴趣的:(日记)