最近有小伙伴私聊辉哥,问怎么请求第三方平台的接口,比如想请求第三方的天气接口、短信接口、车次信息接口等。这个提问的小伙伴,因为他们公司业务的要求,需要请求第三方的接口。但他之前没做过类似的功能,不知道该怎么办,于是就来问辉哥了。只要粉丝有要求,那辉哥就给安排,我们就是这么实力宠粉。

本篇文章,辉哥就来教大家怎么在自己的项目中请求第三方接口,辉哥保证会让你用最短的时间学会这个技能。来,让我们搞起!

一. 需求分析

本文以实现某个城市的每日天气信息查询为例,通过调用第三方的天气预报接口,来教大家学会如何调用第三方接口,如下图所示:

grafana天气 sofia天气_java

下图是天气预报的接口信息:

grafana天气 sofia天气_java_02

以上就是相关需求的文档信息,现在我们已经知道了关于天气信息的查询接口文档,接下来我们就来编码实现这个需求。

二. 实现分析

那么这个需求的代码到底该怎么实现呢?在代码实现之前,辉哥先来给大家分析一下实现过程。其实无论我们接到什么样的需要,首先要对需求进行分析,把需求先梳理清楚。如果我们连需求都无法理顺,那么代码又怎么能写得出来呢?

今天这个需求,就是让我们通过代码实现第三方接口的调用。既然如此,首先我们要看懂这个接口,需要知道第三方接口的url地址、请求方式、通信协议、请求参数和返回值等。弄明白了这些,我们才可以实现第三方接口的调用。

1.天气接口

接下来我们就分析一下这个第三方的天气接口。

url地址:http://apis.juhe.cn/simpleWeather/query

请求参数:键值对传递,city=城市&key=自己的key

我们要根据平台要求,先去申请一个Key,这样才可以对第三方接口进行调用,该步骤省略。

grafana天气 sofia天气_天气接口_03

2.思考如何请求第三方接口?

那么我们到底该怎么去调用第三方的接口呢?该用哪些技术呢?其实目前市面上请求第三方接口的常用技术有三种:

  • HttpClientApache Jakarta Common下的子项目;
  • HttpURLConnection:JDK自带的接口请求类;
  • OkHttpSQUARE公司开发的,主要用于安卓环境。

那么今天辉哥会选择哪个技术呢呢?我们直接选择简单粗暴的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));
}

执行结果如下:

grafana天气 sofia天气_Java_04

在上图的执行结果中,我们可以看到,json结果中已经拿到了”郑州“的天气信息,接下来我们只需要解析这个json文件,在相关的页面上进行渲染展示就可以了。这样我们通过简单的几步操作,就实现了对第三方接口的调用。

四. 结语

现在你知道该怎么调用第三方接口了吗?上面辉哥给大家定义的请求方法,大家其实可以把它当做一个工具类。以后如果你的项目中有相关的需求,可以直接把辉哥的这段代码拿过去,适当地根据自己的项目需求,进行简单修改就好了。