当前位置: 首页 > news >正文

老黄历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;

}

}

补充

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

相关文章:

  • java properties api_【001】java中配置文件properties的操作
  • java 获取代码line_linedemo.java
  • java spring 加载顺序_java编程之如何控制springboot中bean的加载顺序
  • java注册用户信息_界面设计之注册用户信息
  • java 解析der文件_[Java]读取文件方法大全
  • java中成员变量的分类_Java基础—变量分类、类与对象
  • java语言字符串代码_JAVA语言实现字符串排序的代码教程
  • java findcontour_cvFindContours获取轮廓数目和轮廓图像
  • java if 没有_使用if语句时,为什么我的代码没有给出正确的答案? - java
  • php时间格式转换成时间戳,php时间格式转换成时间戳的方法
  • echarts php 数据处理,PHP 使用Echarts生成数据统计报表详解
  • conv php,php metaphone()函数及php localeconv() 函数实例解析
  • php 配置 error_reporting,关于php中的错误配置display_errors与error_reporting说明
  • php计算器源码,php 简单计算器
  • 学生考勤管理系统php,php158 学生考勤管理系统
  • 230. Kth Smallest Element in a BST
  • Angularjs之国际化
  • CODING 缺陷管理功能正式开始公测
  • ES6系统学习----从Apollo Client看解构赋值
  • export和import的用法总结
  • gf框架之分页模块(五) - 自定义分页
  • Netty源码解析1-Buffer
  • 前端面试题总结
  • 使用docker-compose进行多节点部署
  • 微信小程序开发问题汇总
  • 微信小程序填坑清单
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • Semaphore
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #if 1...#endif
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $.ajax,axios,fetch三种ajax请求的区别
  • (20050108)又读《平凡的世界》
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十八)三元表达式和列表解析
  • (五)IO流之ByteArrayInput/OutputStream
  • (源码分析)springsecurity认证授权
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET BackgroundWorker
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .net6+aspose.words导出word并转pdf
  • .NET企业级应用架构设计系列之应用服务器
  • .NET文档生成工具ADB使用图文教程