开发者社区> 尘光掠影> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

java后台创建url连接,获取接口数据

简介: 版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/78982905 简介   1.
+关注继续查看
版权声明:本文为博主原创文章,如需转载,请标明出处。 https://blog.csdn.net/alan_liuyue/article/details/78982905

简介

  1. 在实践中,当项目不断进行新功能开发的时候,我们就不可能将所有的方法、功能点全部都写在同一个项目里面,这样也不符合脱耦的趋势;
  2. 那么,在项目中,我们既要增加新的功能点,又要最大限度地降低耦合度,我们就要不断地对接口进行深入发掘;
  3. 像阿里的分布式服务框架dubbo,也是一种基于接口开发的服务框架,它不仅能松耦合,而且功能点都是通过不断增加接口来不断增加;
  4. 本篇博客不讲述接口如何开发,而是简单地介绍,如何通过java创建url连接,获取接口返回来的json数据;

项目实践

/**
 * 获取接口数据,返回json格式字符串,方法1
 * @param url 接口路径
 * @param params 传递参数,自定义
 * @param key 传递参数标识,自定义
 * @return
 */
public String getData1(String url,String params,String key){

        String rs = null;
        CloseableHttpClient httpClient = HttpClient.createDefault();
        try{
            //拼接参数,转义参数
            String connUrl = url+"?params="+URLEncoder.encode(params,HTTP.UTF-8)+"&key="+key;

            //创建连接
            HttpGet get = new HttpGet(connUrl);

            //获取以及解析数据
            CloseableHttpResponse resp = httpClient.execute(get);
            rs = EntityUtils.toString(resp.getEntity(),HTTP.UTF-8);

        }catch(IOException e){
            System.out.println("出错了")
        }
        return rs;

}

/**
 * 获取接口数据,返回json格式字符串,方法2
 * @param url 接口路径
 * @param params 传递参数,自定义
 * @param key 传递参数标识,自定义
 * @return
 */
public String getData2(String url,String params,String key){

        HttpURLConnection conn = null;
        BufferedReader reader = null;
        String rs = null;
        try {
            //拼接参数,转义参数
            String connUrl = url+"?params="+URLEncoder.encode(params,HTTP.UTF-8)+"&key="+key;

            //创建连接
            URL url = new URL(connUrl); 
            conn = (HttpURLConnection) url.openConnection();
            conn.setUseCaches(false);
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);
            conn.setInstanceFollowRedirects(false);
            conn.connect();

            //获取并解析数据
            InputStream is = conn.getInputStream();
            reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            StringBuffer sb = new StringBuffer();
            String strRead = null;
            while ((strRead = reader.readLine()) != null) {
                sb.append(strRead);
            }
            rs = sb.toString();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                reader.close();
            }
            if (conn != null) {
                conn.disconnect();
            }
        }
        return rs;
}

总结

  1. 上面提供了两种方法来创建连接,获取接口数据,可自选比较合适的方法;
  2. 返回的rs都是json格式的字符串,可直接使用JSONObject object = JSONObject.fromObject(rs)来转换成json对象,然后进行多层次的解析;
  3. 实践是检验认识真理性的唯一标准,试一试就知道好不好用了;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java-创建一个自定义窗口,扁平化界面
Java-创建一个自定义窗口,扁平化界面
0 0
Java-用简单方法创建透明窗口
Java-用简单方法创建透明窗口
0 0
线程的创建和状态(操作系统和java)
线程的创建和状态(操作系统和java)
0 0
Java面向对象8——接口(内含IDEA中有关创建接口的创建说明)
上一次我们说了抽象方法的存在是因为父类可以抽取子类中的共性方法,但是共性方法内实现方法不同所以要将共性方法写成抽象方法,那么如果子类中有一个“另类”不需要这个方法的话,我们就无法使用抽象方法了,而是要使用接口,哪个子类需要用,就继承该接口
0 0
java二叉树创建
二叉树笨办法创建
0 0
Java小技能:快速创建List常用几种方式
集合的概念: - 在数学意义上的概念是: 对个数据放置在一起而建立起来的模型,这些数据类型可以不同; - 在软件中的定义,一堆数据放置在一个空间中存储,将整个存储空间称为集合。
0 0
Java基础进阶多线程-四种创建方式
Java基础进阶多线程-四种创建方式
0 0
Java基础对象的创建和使用-例02
Java基础对象的创建和使用-例02
0 0
Java基础对象的创建和使用-例01
Java基础对象的创建和使用-例01
0 0
Java基础对象的创建和使用03
Java基础对象的创建和使用03
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
JAVA 应用排查全景图
立即下载
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载