老黄历java_基于聚合数据的老黄历接口调用示例-JAVA版

本文介绍聚合数据的老黄历接口的使用

依赖

net.sf.json-lib

json-lib

2.2.3

jdk15

代码部分

package com.example.demo;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

import java.io.*;

import java.net.HttpURLConnection;

import java.net.URL;

import java.nio.charset.StandardCharsets;

/**

* 老黄历示例代码

*/

public class Demo65 {

//接口请求地址

public static final String CAlENDAR_URL = "http://v.juhe.cn/laohuangli/d?key=%s&date=%s";

public static final String HOUR_URL = "http://v.juhe.cn/laohuangli/h?key=%s&date=%s";

//申请接口的请求key

// TODO: 您需要改为自己的请求key

public static final String KEY = "您需要改为自己的请求key";

public static void main(String[] args) {

// TODO: 日期

String date = "2020-11-10";

//日期接口

System.out.println("------------日期接口-----------------");

printCalendar(date);

//时辰接口

System.out.println("------------时辰接口-----------------");

printHour(date);

}

/**

* 时辰

*

* @param date String 日期

*/

public static void printHour(String date) {

//发送http请求的url

String url = String.format(HOUR_URL, KEY, date);

final String response = doGet(url);

System.out.println("接口返回:" + response);

try {

JSONObject jsonObject = JSONObject.fromObject(response);

int error_code = jsonObject.getInt("error_code");

if (error_code == 0) {

System.out.println("调用接口成功");

JSONArray result = jsonObject.getJSONArray("result");

result.stream().map(JSONObject::fromObject).forEach(hour -> {

System.out.println("阳历:" + ((JSONObject) hour).getString("yangli"));

System.out.println("时间段:" + ((JSONObject) hour).getString("hours"));

System.out.println("描述:" + ((JSONObject) hour).getString("des"));

System.out.println("宜:" + ((JSONObject) hour).getString("yi"));

System.out.println("忌:" + ((JSONObject) hour).getString("ji"));

});

} else {

System.out.println("调用接口失败:" + jsonObject.getString("reason"));

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 日期

*

* @param date String 日期

*/

public static void printCalendar(String date) {

//发送http请求的url

String url = String.format(CAlENDAR_URL, KEY, date);

final String response = doGet(url);

System.out.println("接口返回:" + response);

try {

JSONObject jsonObject = JSONObject.fromObject(response);

int error_code = jsonObject.getInt("error_code");

if (error_code == 0) {

System.out.println("调用接口成功");

JSONObject result = jsonObject.getJSONObject("result");

System.out.println("阳历:" + result.getString("yangli"));

System.out.println("阴历:" + result.getString("yinli"));

System.out.println("五行:" + result.getString("wuxing"));

System.out.println("冲煞:" + result.getString("chongsha"));

System.out.println("彭祖百忌:" + result.getString("baiji"));

System.out.println("吉神宜趋:" + result.getString("jishen"));

System.out.println("宜:" + result.getString("yi"));

System.out.println("凶神宜忌:" + result.getString("xiongshen"));

System.out.println("忌:" + result.getString("ji"));

} else {

System.out.println("调用接口失败:" + jsonObject.getString("reason"));

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* get方式的http请求

*

* @param httpUrl 请求地址

* @return 返回结果

*/

public static String doGet(String httpUrl) {

HttpURLConnection connection = null;

InputStream inputStream = null;

BufferedReader bufferedReader = null;

String result = null;// 返回结果字符串

try {

// 创建远程url连接对象

URL url = new URL(httpUrl);

// 通过远程url连接对象打开一个连接,强转成httpURLConnection类

connection = (HttpURLConnection) url.openConnection();

// 设置连接方式:get

connection.setRequestMethod("GET");

// 设置连接主机服务器的超时时间:15000毫秒

connection.setConnectTimeout(15000);

// 设置读取远程返回的数据时间:60000毫秒

connection.setReadTimeout(60000);

// 发送请求

connection.connect();

// 通过connection连接,获取输入流

if (connection.getResponseCode() == 200) {

inputStream = connection.getInputStream();

// 封装输入流,并指定字符集

bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));

// 存放数据

StringBuilder sbf = new StringBuilder();

String temp;

while ((temp = bufferedReader.readLine()) != null) {

sbf.append(temp);

sbf.append(System.getProperty("line.separator"));

}

result = sbf.toString();

}

} catch (IOException e) {

e.printStackTrace();

} finally {

// 关闭资源

if (null != bufferedReader) {

try {

bufferedReader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (null != inputStream) {

try {

inputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (connection != null) {

connection.disconnect();// 关闭远程连接

}

}

return result;

}

/**

* post方式的http请求

*

* @param httpUrl 请求地址

* @param param 请求参数

* @return 返回结果

*/

public static String doPost(String httpUrl, String param) {

HttpURLConnection connection = null;

InputStream inputStream = null;

OutputStream outputStream = null;

BufferedReader bufferedReader = null;

String result = null;

try {

URL url = new URL(httpUrl);

// 通过远程url连接对象打开连接

connection = (HttpURLConnection) url.openConnection();

// 设置连接请求方式

connection.setRequestMethod("POST");

// 设置连接主机服务器超时时间:15000毫秒

connection.setConnectTimeout(15000);

// 设置读取主机服务器返回数据超时时间:60000毫秒

connection.setReadTimeout(60000);

// 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true

connection.setDoOutput(true);

// 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。

connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

// 通过连接对象获取一个输出流

outputStream = connection.getOutputStream();

// 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的

outputStream.write(param.getBytes());

// 通过连接对象获取一个输入流,向远程读取

if (connection.getResponseCode() == 200) {

inputStream = connection.getInputStream();

// 对输入流对象进行包装:charset根据工作项目组的要求来设置

bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));

StringBuilder sbf = new StringBuilder();

String temp;

// 循环遍历一行一行读取数据

while ((temp = bufferedReader.readLine()) != null) {

sbf.append(temp);

sbf.append(System.getProperty("line.separator"));

}

result = sbf.toString();

}

} catch (IOException e) {

e.printStackTrace();

} finally {

// 关闭资源

if (null != bufferedReader) {

try {

bufferedReader.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (null != outputStream) {

try {

outputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (null != inputStream) {

try {

inputStream.close();

} catch (IOException e) {

e.printStackTrace();

}

}

if (connection != null) {

connection.disconnect();

}

}

return result;

}

}

补充

如果你在运行的时候有任何问题,请给我留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值