免费节假日api接口使用教程-聚合数据
📖访问官网
聚合数据
官网地址 https://dashboard.juhe.cn/home
点击api
接口文档
🌰例子
get方式
curl -k -i -d "key=您申请的AppKey&date=2021-05-09" http://apis.juhe.cn/fapig/calendar/day
返回结果
{
"reason": "success",
"result": {
"date": "2021-05-09",
"week": "星期日",
"statusDesc": "周末",
"status": null,
"animal": "牛",
"avoid": "订婚.上梁.纳采.盖屋.开仓",
"cnDay": "日",
"day": "9",
"desc": "母亲节",
"gzDate": "丁巳",
"gzMonth": "癸巳",
"gzYear": "辛丑",
"isBigMonth": "1",
"lDate": "廿八",
"lMonth": "三",
"lunarDate": "28",
"lunarMonth": "3",
"lunarYear": "2021",
"month": "5",
"suit": "搬家.装修.开业.结婚.入宅.领证.开工.动土.安床.出行.安葬.开张.作灶.旅游.求嗣.赴任.修造.祈福.祭祀.解除.开市.牧养.纳财.纳畜.开光.嫁娶.移徙.经络.立券.求医.竖柱.栽种.斋醮.求财",
"term": "",
"value": "母亲节",
"year": "2021"
},
"error_code": 0
}
完整代码
import net.sf.json.JSONObject;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
import java.util.HashMap;
public class ApiDemo {
public static void main(String[] args) {
// 发送http请求的url
String url = "http://apis.juhe.cn/fapig/calendar/day";
Map<String, String> params = new HashMap<String, String>();
params.put("key", "您申请的AppKey"); // 在个人中心->我的数据,接口名称上方查看
params.put("date", "2021-05-09"); // 指定日期,格式为yyyy-MM-dd,如:2021-05-01
String paramsStr = urlencode(params);
System.out.println(paramsStr);
String response = doGet(url,paramsStr);
// // post请求
// String response = doPost(url,paramsStr);
// 输出请求结果
System.out.println(response);
try {
// 解析请求结果,json:
JSONObject jsonObject = JSONObject.fromObject(response);
System.out.println(jsonObject);
// 具体返回示例值,参考返回参数说明、json返回示例
} catch (Exception e) {
e.printStackTrace();
}
}
// 将map型转为请求参数型
public static String urlencode(Map<String, String> data) {
StringBuilder sb = new StringBuilder();
for (Map.Entry i : data.entrySet()) {
try {
sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return sb.toString();
}
/**
* get方式的http请求
*
* @param httpUrl 请求地址
* @param paramStr 请求参数
* @return 返回结果
*/
public static String doGet(String httpUrl,String paramStr) {
HttpURLConnection connection = null;
InputStream inputStream = null;
BufferedReader bufferedReader = null;
String result = null;// 返回结果字符串
try {
httpUrl += "?"+paramStr;
// 创建远程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.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 发送请求
connection.connect();
// 通过connection连接,获取输入流
if (connection.getResponseCode() == 200) {
inputStream = connection.getInputStream();
// 封装输入流,并指定字符集
bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "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 (MalformedURLException e) {
e.printStackTrace();
} 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 paramStr 请求参数
* @return 返回结果
*/
public static String doPost(String httpUrl, String paramStr) {
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(paramStr.getBytes());
// 通过连接对象获取一个输入流,向远程读取
if (connection.getResponseCode() == 200) {
inputStream = connection.getInputStream();
// 对输入流对象进行包装:charset根据工作项目组的要求来设置
bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "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 (MalformedURLException e) {
e.printStackTrace();
} 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;
}
}
🖊️最后总结
🖲要熟练掌握技巧,一定多多坚持练习:骐骥一跃,不能十步;驽马十驾,功在不舍。