使用Java代码,httpclient调用彩云天气接口-token版本
彩云API参考链接https://docs.caiyunapp.com/weather-api/v2/v2.6/1-realtime.html本文为token版本若需要AppkeyAppSecret认证版本请参考V3API认证与鉴权一、引入 Maven 依赖!-- httpclient -- dependency groupIdorg.apache.httpcomponents/groupId artifactIdhttpclient/artifactId version4.5.14/version /dependency !-- json 解析 -- dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version1.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;charsetUTF-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); } } }三、关键说明获取 Token去彩云天气官网注册账号申请开发者token替换代码中接口说明实时天气/v2.6/token/经度,纬度/realtime逐日 / 小时预报、空气质量 可自行改接口路径资源自动关闭使用try-with-resources自动关闭HttpClient、Response避免连接泄漏异常处理捕获 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();