Java学习笔记- Web Service如何调用第三方接口(API)

前言

以下内容仅供新人软件工程师以及对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张
11111
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转载请注明出处

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值