昨天接到一个任务,使用公司的ESB,调用别人的接口,把得到的数据存储到mysql数据库当中,这里简单记录解决思路,方便以后查看。
1.拿到一个网站的地址,使用火狐浏览器的firebug工具,查看其传递的参数、访问的接口以及获得的json格式数据。
传递参数
time : [2016-05-03T08:00:00,2016-05-04T14:31:00]
请求地址
http://www.qzsdj.gov.cn//xq/water?time=[2016-05-02T08:00:00,2016-05-04T14:31:00]
json信息
*id "QZST004" //测站编号
time "2016-05-04T14:35:00" //查询最后定义时间时间
val 398.13 //最新水位
water_potential "6" //水势(涨、平、落)
capacity 3174.24 //库容(百万m³)
*name "东固" //测站站名
*lng 118.31 //x坐标
*lat 25.7577 //y坐标
*type "RR"
*type_name "水库水文站"
*address "泉州市德化县水口镇" //所在地址
*area_id "350526" //身份证前缀
*area_name "德化县" //所在地区
flood_val 409 //汛限/警戒
ensure_val 410 //正常/保证
is_over false
*river_name "涌溪" //河流名称
*water_system "闽江中下游"
town_code "350526106" //行政编码
town_name "水口镇" //乡镇名称
*为一定不为null
2. 使用Java服务生成所需要的参数
// 设置参数time的值
long curtime = System.currentTimeMillis();
Date date = new Date(curtime);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");//自定义时间格式
String a = df.format(date);
String time = "[2016-05-02T08:00:00," + a + "]";
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map = new HashMap<String, String>();
map.put("time", time);
list.add(map);
// 节点输出消息
Message outMessage = new DefaultMessage();
// 节点输出消息数据
outMessage.setBody(list);
// 消息载体设置输出消息
exchange.setOutMessage(outMessage);
传递参数
time : [2016-05-03T08:00:00,2016-05-04T14:31:00]
3.使用http调用去请求数据
4.把jason数据转换成数据库数据
5.把数据库数据存储到mysql当中
流程图如下: