1.背景介绍:showAPI(易源数据),易源数据通过打破资源壁垒,搭建起数据资源的基础设施,将接口纳入统一的接口池,把多个异构数据源合并到同一根管线上,以统一的访问和控制方式,对外提供统一格式的数据。让开发者可以像搭积木一样通过各种API操纵资源。截至2017年12月,平台已经拥有API接口230个,日调用量2000万,覆盖全网10万+真实消费者,为超过3000+的企业用户提供全域数据服务。
2.要想使用易源APIStore的免费接口,必须先在平台注册账号,可以使用邮箱注册账号。平台网址:https://www.showapi.com/,注册账号后,可以免费使用指定的一些接口,也可以付费使用一些付费接口,实名认证后还可以获得免费接口使用的更多特权。
注册账号之后,会得到一个appid和secret(密钥),如下所示
接下来,就可以选择免费的接口并订购了,如下所示
3.选择其中一个接口如“历史上的今天”为例,演示使用;点击“历史上的今天”进入详情页面,往下拉可看到下载sdk的超链接如下,把javasdk下载下来,导入eclipse中,此处需注意,导入sdk后会看到项目有红色感叹号报错,是因为缺少了相应的jar包导致,导入相应jar包即可解决,一开始我搞不清楚问题所在,在这里浪费了点时间。
4.导入sdk之后便可以来编写测试代码了,前端代码这里就不粘贴了,大家各自发挥,只贴JavaBean的代码和action里的代码如下
package com.test;
import java.util.Date;
public class thing {
private String event;
private String date;
public String getEvent() {
return event;
}
public void setEvent(String event) {
this.event = event;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
action里的代码如下:
package com.test;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.opensymphony.xwork2.ActionSupport;
import com.show.api.ShowApiRequest;
public class test extends ActionSupport{
public String find() throws UnsupportedEncodingException {
// TODO Auto-generated method stub
//获取前端发来的数据,request方式
HttpServletRequest request=ServletActionContext.getRequest();
//获取当前网络时间
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("MMdd");
String dateString = formatter.format(currentTime);
String res=new ShowApiRequest("http://route.showapi.com/119-42","59563","c2cbb049e5c24069aa4c81d6989ec3a5")
.addTextPara("date",dateString)
.post();
try {
JSONObject js=JSONObject.parseObject(res);
//System.out.println(js.getJSONObject("showapi_res_body"));
//String list=js.getString("list");
//System.out.println(list);
JSONArray jsarr=js.getJSONObject("showapi_res_body").getJSONArray("list");
//循环得出所有对象
System.out.println("断点1"+jsarr);
List<thing> list=new ArrayList<thing>();
for(int i=0;i<jsarr.size();i++) {
System.out.println("断点2");
JSONObject ao=jsarr.getJSONObject(i);
String a=ao.getString("title");
String b=ao.getString("year");
String c=ao.getString("month");
String d=ao.getString("day");
String date=b+"-"+c+"-"+d;
thing t=new thing();
t.setEvent(a);
t.setDate(date);
System.out.println(a+","+b+"-"+c+"-"+d);
list.add(t);
}
request.setAttribute("list", list);
}
catch(Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
}
struts.xml配置如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 包结构 -->
<package name="default" namespace="/" extends="struts-default">
<!-- 配置action -->
<action name="yiyuanapi_*" class="com.test.test" method="{1}">
<!-- 配置跳转页面 -->
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
5.关于上面对接口返回的JSON形式数据的处理,可以使用fastjson工具对其进行反序列化;
阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)
API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。这里推荐博文:https://www.cnblogs.com/tapt/p/6614127.html
fastjson工具需要用到jar包网盘下载地址:链接:https://pan.baidu.com/s/1SXPHhwl9FRXxCoGHmk5NfA 密码:kqwk
6.最后界面效果如下