前言
以下内容仅供新人软件工程师以及对Java Web Service有兴趣爱好的朋友交流学习。本人也是在网上学习总结的此篇博客,权当一个学习笔记记录下来,如有不足,欢迎留言补充
一、寻找能够调用的接口(api)
分享一些网上找到的免费开放Api接口,返回格式是JSON,但是不要将这些Api接入正式项目。你懂的!
新实时段子:
https://api.apiopen.top/getJoke?page=1&count=2&type=video
参数 | 值含义 |
---|---|
page | 分页 |
count | 条数 |
type | 类型 |
必应高清壁纸:
https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=8&mkt=zh-CN
参数 | 值含义 |
---|---|
format (非必需) | 返回数据格式,不存在返回xml格式。js :(一般使用这个json格式)xml:(返回xml格式) |
idx (非必需) | 请求图片截止天数0 今天-1 截止中明天 (预准备的)1 截止至(目前最多获取到7天前的图片) |
n (必需) | 1-8 返回请求数量,目前最多一次获取8张 |
111 | 11 |
mkt (非必需) | 地区 |
二、使用方法
1.默认能够独立创建Java web工程,我使用的是ssh框架。直接上后台代码。
代码如下(示例):
// 测试第三方接口,返回数据
/**
*
* @description : post接口 返回结果字符串
* @params : [ param]
* @param url 请求接口
* @param param 需要的json字符串
*
*/
public String getsaveData(HttpServletRequest request, HttpServletResponse response) {
JSONObject data = new JSONObject();
com.alibaba.fastjson.JSONObject jsons = null;
//“js”代表返回的json格式,其他请查询必应壁纸官方第三方接口格式
// data.put("format","js");
// data.put("idx",0);
// data.put("n",2);
// data.put("mkt","zh-CN");
data.put("page",1);
data.put("count",2);
data.put("type","video");
try {
// URL url = new URL("https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=8&mkt=zh-CN");
URL url = new URL("https://api.apiopen.top/getJoke");
//https://api.apiopen.top/getJoke?page=1&count=2&type=video
//打开和url之间的连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
PrintWriter out = null;
//请求方式 这里设置你需要请求的方式
conn.setRequestMethod("POST");
// //设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
// 这里设置请求头
conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
//设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个
//最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,
//post与get的 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
conn.setDoOutput(true);
conn.setDoInput(true);
//获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
//发送请求参数即数据
out.print(data);
//缓冲数据
out.flush();
//获取URLConnection对象对应的输入流
InputStream is = conn.getInputStream();
//构造一个字符流缓存
BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String str = "";
while ((str = br.readLine()) != null) {
jsons =com.alibaba.fastjson.JSONObject.parseObject(str);
}
System.out.println("获取到的报文数据为:"+jsons);
//对jsons中的text字段转码
//关闭流
is.close();
//断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被 其他线程使用就不切断。
//固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上 disconnect后正常一些。
conn.disconnect();
System.out.println("结束");
} catch (Exception e) {
e.printStackTrace();
}
return jsons.toString();
}
2.前台获取数据展示
代码如下(示例):
/*第三方接口数据获取*/
$.ajax({
url: "getsaveData", //提交的路径
type: "post", //提交方式
data: {
//向后台提交的数据,可以根据后台自己定义,现在后台方法中参数是写死的,不用传,传“”即可。
},
dataType: "JSON", //规定请求成功后返回的数据
success: function (data) {
//请求成功之后进入该方法,data为成功后返回的数据
var flag = data.result;
var str="<ul>";
for(var i = 0; i < flag.length; i++){
// str+="<li>"+"ID:"+flag[i].hsh+"</li>";
// str+="<li>"+"图片链接:"+flag[i].url+"</li>";
//前缀 https://cn.bing.com
// str+= "<img src='https://cn.bing.com"+flag[i].url+"'/>";
str+="<li>"+"ID:"+flag[i].sid+"</li>";
str+="<li>"+"视频链接:"+flag[i].video+"</li>";
//前缀 https://cn.bing.com
str+= "<video src='"+flag[i].video+"'style='width:50%;height:500px' controls/>";
}
str+="</ul>";
//"#dataget"改成你要展示区域对应的id
$("#dataget").html(str);
alert('成功');
},
error: function (errorMsg) {
//请求失败之后进入该方法,errorMsg为失败后返回的错误信息
alert('失败');
}
});
总结
注意:使用的同时一定要看好备注
1写了两个接口调用另一个被注释了,解开即可
2根据不同的环境,展示数据时 $("#dataget").html(str);“dataget”改成自己的id。
3有问题咨询qq1320312132
4转载请注明出处