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

使用Java代码,httpclient调用彩云天气接口-token版本

彩云API参考链接:https://docs.caiyunapp.com/weather-api/v2/v2.6/1-realtime.html

本文为token版本,若需要Appkey&AppSecret认证版本请参考V3API认证与鉴权

一、引入 Maven 依赖

<!-- httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.14</version> </dependency> <!-- json 解析 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency>

二、完整 Java 代码

import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import java.io.IOException; /** * 彩云天气 HttpClient 调用完整示例 * 官方文档:https://open.caiyunapp.com/ */ public class CaiYunWeatherDemo { // 1. 替换为你自己的 彩云天气 Token private static final String TOKEN = "你的彩云天气token"; /** * 调用彩云天气接口 获取实时天气 * @param longitude 经度 * @param latitude 纬度 * @return 天气json结果 */ public static String getWeather(double longitude, double latitude) { // 接口地址:实时天气 String url = String.format( "https://api.caiyunapp.com/v2.5/%s/%.6f,%.6f/realtime", TOKEN, longitude, latitude ); // 创建HttpClient try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpGet httpGet = new HttpGet(url); // 设置请求头 httpGet.addHeader("Content-Type", "application/json;charset=UTF-8"); // 执行请求 try (CloseableHttpResponse response = httpClient.execute(httpGet)) { HttpEntity entity = response.getEntity(); if (entity != null) { // 读取响应内容 return EntityUtils.toString(entity, "UTF-8"); } } } catch (IOException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { // 示例:北京 经纬度 double lon = 116.403874; double lat = 39.914885; // 调用接口 String result = getWeather(lon, lat); System.out.println("原始返回结果:"); System.out.println(result); // 解析JSON if (result != null) { JSONObject json = JSONObject.parseObject(result); JSONObject realtime = json.getJSONObject("result").getJSONObject("realtime"); // 取出关键天气字段 String sky = realtime.getString("sky"); // 天气状况 double temp = realtime.getDouble("temperature");// 温度 double humidity = realtime.getDouble("humidity");// 湿度 System.out.println("\n===== 天气解析结果 ====="); System.out.println("天气:" + sky); System.out.println("温度:" + temp + " ℃"); System.out.println("湿度:" + humidity); } } }

三、关键说明

  1. 获取 Token去彩云天气官网注册账号,申请开发者token,替换代码中

  2. 接口说明

    • 实时天气:/v2.6/token/经度,纬度/realtime
    • 逐日 / 小时预报、空气质量 可自行改接口路径
  3. 资源自动关闭使用try-with-resources自动关闭HttpClient、Response,避免连接泄漏

  4. 异常处理捕获 IO 异常,适合项目生产使用


四、拓展:POST 请求 / 带超时配置

如果需要设置超时,替换创建 Client 代码:

import org.apache.http.client.config.RequestConfig; RequestConfig config = RequestConfig.custom() .setConnectTimeout(5000) // 连接超时 .setSocketTimeout(10000) // 读取超时 .build(); CloseableHttpClient httpClient = HttpClients.custom() .setDefaultRequestConfig(config) .build();
http://www.jsqmd.com/news/658403/

相关文章:

  • LangGraph 循环节点避坑:5个导致死循环的错误与终止条件设计
  • 超万张高清药片图像数据集助力智能医疗检测与识别算法研发
  • 基于STM32LXXX的模数转换芯片ADC(ADS1100A0IDBVR)驱动C程序设计
  • YAML配置介绍
  • OpenWRT插件编译避坑指南:如何将任意第三方插件集成到GitHub Actions工作流
  • Chapter 11: Physical Layer - Logical (Gen1 and Gen2)
  • PADS Layout在Pcb设计前的实用设置
  • Stardock Fences(桌面管理工具) 6.02
  • ceph子集群和rados
  • 基于STM32LXXX的模数转换芯片ADC(SGM58031XMS10G/TR)驱动C程序设计
  • 技术书籍推荐
  • Java 常见 Map 对比总结:HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap
  • 负载箱与电网质量的相互影响:用户应知的技术事实与应对策略
  • 深入RT-Thread BSP引擎:从Kconfig选项到SCons脚本,彻底搞懂STM32工程构建的里子
  • 图片去水印 API 哪个好?5种方案实测对比(附避坑指南 + 免费在线体验)
  • 杀疯了!Claude Opus 4.7 突袭发布,多项能力登顶第一
  • 保姆级教程:用Scikit-learn的train_test_split和cross_val_score搞定数据集划分与交叉验证
  • Cadence 17.2 allegro如何导出封装库-library
  • 跨越桌面与移动的边界:Windows 10如何无缝融合Android应用生态?
  • ODI备案代办
  • 为什么Google Brain团队在SITS2026圆桌突然终止演示?背后是智能代码生成的“第三道红线”:训练数据版权溯源不可绕行(附法律+技术双轨应对方案)
  • 虚拟化赛道大洗牌,Infortrend存储带Proxmox VE-凭硬核实力成为企业替代方案首选
  • 告别字典盲打:用BurpSuite Intruder对DVWA密码爆破进行结果智能分析与过滤实战
  • 2026供应商审核重点:5大维度+AI工具应用指南
  • 告别百度看病:我用 Nexent 手搓了一个宠物急救与健康管家
  • 在idea中怎么把目录(directory)转成模块
  • K8s 集群安全加固措施
  • SITS2026案例深度复盘:从Prompt工程到可交付React组件,AI生成前端代码的7步工业化流水线
  • 用STM32F103C8T6和CubeMX做个密码锁,我踩过的OLED显示和矩阵按键的坑都在这了
  • 15.5k Star项目的作者,连个申诉入口都找不到