专栏首页复盘总结文章集合通过快递api获取物流信息示例-快递100

通过快递api获取物流信息示例-快递100

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;



import org.apache.commons.lang3.StringUtils;
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.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSON;
import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONArray;
import com.aliyun.openservices.shade.com.alibaba.rocketmq.shade.com.alibaba.fastjson.JSONObject;




public class Kuaidi100 {

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 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;
        }
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • jdk1.8新特性总结

      jdk1.8出来已经一段时间了,但是很多公司(我们公司也一样)不太愿意升级到高版本的jdk,主要是有老的项目要维护,还有升级的话配套的框架也要升级,要考虑的...

    ZhangXianSheng
  • 利用php url转发 - 解决空间不提供子目录绑定功能的问题

    由于很多新手都是使用的虚拟空间都是最便宜的那种,这空间一般不支持子目录绑定。但是很多朋友又想设置几个不同的二级域名访问不同的网站程序。于是大家找到了域名url转...

    ZhangXianSheng
  • java对象与json对象间的相互转换

    JSONObject jsonObject = JSONObject.fromObject(jsonStr);

    ZhangXianSheng
  • 百度人脸识别API Java调用

    工具类下载http://pan.baidu.com/s/1jIuo0N8 小Demo查询。 1.官网文档必须看 http://ai.baidu.com/docs...

    小帅丶
  • Android中Retrofit 2.0直接使用JSON进行数据交互

    之前使用Retrofit都是将JSON串转化为POJO对象,针对不同的业务协议,定义相应的接口和参数列表。但是此种方式一般用在自己内部协议基础上,具体大的项目中...

    砸漏
  • 《从0到1学习Flink》—— 如何自定义 Data Sink ?

    前篇文章 《从0到1学习Flink》—— Data Sink 介绍 介绍了 Flink Data Sink,也介绍了 Flink 自带的 Sink,那么如何自定...

    zhisheng
  • 自己动手写一个服务网关

    如图所示,在不使用网关的情况下,我们的服务是直接暴露给服务调用方。当调用方增多,势必需要添加定制化访问权限、校验等逻辑。当添加API网关后,再第三方调用端和服...

    java进阶架构师
  • 【原创】自己动手写一个服务网关

    Java高级架构
  • js插件库+bootstrap

    wfaceboss
  • Bootstrap Table 定时刷新固定滚动条的位置

    场景:一张内容很大的表格,每隔一段时间刷新数据,用户看数据的时候突然刷新了,由于刷新后滚动条弹到顶部,这时客户再找刚才看的内容,就比较困难了,如何解决了?

    tianyawhl

扫码关注云+社区

领取腾讯云代金券