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

11 篇文章 0 订阅

简介

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. 实践是检验认识真理性的唯一标准,试一试就知道好不好用了;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值