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