最近有小伙伴私聊辉哥,问怎么请求第三方平台的接口,比如想请求第三方的天气接口、短信接口、车次信息接口等。这个提问的小伙伴,因为他们公司业务的要求,需要请求第三方的接口。但他之前没做过类似的功能,不知道该怎么办,于是就来问辉哥了。只要粉丝有要求,那辉哥就给安排,我们就是这么实力宠粉。
本篇文章,辉哥就来教大家怎么在自己的项目中请求第三方接口,辉哥保证会让你用最短的时间学会这个技能。来,让我们搞起!
一. 需求分析
本文以实现某个城市的每日天气信息查询为例,通过调用第三方的天气预报接口,来教大家学会如何调用第三方接口,如下图所示:
下图是天气预报的接口信息:
以上就是相关需求的文档信息,现在我们已经知道了关于天气信息的查询接口文档,接下来我们就来编码实现这个需求。
二. 实现分析
那么这个需求的代码到底该怎么实现呢?在代码实现之前,辉哥先来给大家分析一下实现过程。其实无论我们接到什么样的需要,首先要对需求进行分析,把需求先梳理清楚。如果我们连需求都无法理顺,那么代码又怎么能写得出来呢?
今天这个需求,就是让我们通过代码实现第三方接口的调用。既然如此,首先我们要看懂这个接口,需要知道第三方接口的url地址、请求方式、通信协议、请求参数和返回值等。弄明白了这些,我们才可以实现第三方接口的调用。
1.天气接口
接下来我们就分析一下这个第三方的天气接口。
url地址:http://apis.juhe.cn/simpleWeather/query
请求参数:键值对传递,city=城市&key=自己的key
我们要根据平台要求,先去申请一个Key,这样才可以对第三方接口进行调用,该步骤省略。
2.思考如何请求第三方接口?
那么我们到底该怎么去调用第三方的接口呢?该用哪些技术呢?其实目前市面上请求第三方接口的常用技术有三种:
- HttpClient:Apache Jakarta Common下的子项目;
- HttpURLConnection:JDK自带的接口请求类;
- OkHttp:SQUARE公司开发的,主要用于安卓环境。
那么今天辉哥会选择哪个技术呢呢?我们直接选择简单粗暴的HttpURLConnection,因为不要导包,Java中就可以直接使用。
三. 编码
接下来我们就开始编写代码,这里我们先定义一个用于接口请求的方法。
/**
* get请求
* @param url 请求的接口地址,url可以携带参数 ?键值对
* @return 接口的结果,字符串*/
public static String get(String url){
try {
//1.实例化地址对象
URL u=new URL(url);
//2.获取连接对象
HttpURLConnection huc= (HttpURLConnection) u.openConnection();
//3.设置请求信息
huc.setRequestMethod("GET");
huc.setConnectTimeout(3000);
//4.请求接口
huc.connect();
//5.验证接口请求是否成功 Http协议的状态码
if(huc.getResponseCode()==200){
//6.获取接口响应数据 输入流
//从输入流读取数据结果
int len=0;
byte[] data=new byte[1024];
InputStream is=huc.getInputStream();
StringBuffer buffer=new StringBuffer();
while ((len=is.read(data))!=-1){
buffer.append(new String(data,0,len));
}
is.close();
return buffer.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
然后再根据需求的要求,实现接口的调用。
//请求 天气接口
@Test
public void t3(){
//天气的接口地址
String url="http://apis.juhe.cn/simpleWeather/query";
//天气的参数信息
String params="key=231c3bef279cb8c55c6240e7dd14&city=郑州";
//输出一些请求的结果
System.err.println(HttpUtil.post(url,params));
}
执行结果如下:
在上图的执行结果中,我们可以看到,json结果中已经拿到了”郑州“的天气信息,接下来我们只需要解析这个json文件,在相关的页面上进行渲染展示就可以了。这样我们通过简单的几步操作,就实现了对第三方接口的调用。
四. 结语
现在你知道该怎么调用第三方接口了吗?上面辉哥给大家定义的请求方法,大家其实可以把它当做一个工具类。以后如果你的项目中有相关的需求,可以直接把辉哥的这段代码拿过去,适当地根据自己的项目需求,进行简单修改就好了。