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.最後界面效果如下