2025年天气预报 接口(天气预报接口java)

天气预报 接口(天气预报接口java)package cn juhe import net sf json JSONObject import java io import java net HttpURLConne import java net URL import java net URLEncoder import java nio charset StandardChar

大家好,我是讯享网,很高兴认识大家。



package cn.juhe;

讯享网

import net.sf.json.JSONObject;

import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map;

public class SimpleWeather {


讯享网

讯享网</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 天气情况查询接口地址</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> String API_URL = "http://apis.juhe.cn/simpleWeather/query"<span style="color: rgba(0, 0, 0, 1)">; </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 接口请求Key</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> String API_KEY = "xxxxxxxxxxxxxx"<span style="color: rgba(0, 0, 0, 1)">; </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> main(String[] args) { String cityName </span>= "北京"<span style="color: rgba(0, 0, 0, 1)">; queryWeather(cityName); } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 根据城市名查询天气情况 * * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> cityName </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> queryWeather(String cityName) { Map</span>&lt;String, Object&gt; params = <span style="color: rgba(0, 0, 255, 1)">new</span> HashMap&lt;&gt;();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">组合参数</span> params.put("city"<span style="color: rgba(0, 0, 0, 1)">, cityName); params.put(</span>"key"<span style="color: rgba(0, 0, 0, 1)">, API_KEY); String queryParams </span>=<span style="color: rgba(0, 0, 0, 1)"> urlencode(params); String response </span>=<span style="color: rgba(0, 0, 0, 1)"> doGet(API_URL, queryParams); </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> { JSONObject jsonObject </span>=<span style="color: rgba(0, 0, 0, 1)"> JSONObject.fromObject(response); </span><span style="color: rgba(0, 0, 255, 1)">int</span> error_code = jsonObject.getInt("error_code"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 0, 255, 1)">if</span> (error_code == 0<span style="color: rgba(0, 0, 0, 1)">) { System.out.println(</span>"调用接口成功"<span style="color: rgba(0, 0, 0, 1)">); JSONObject result </span>= jsonObject.getJSONObject("result"<span style="color: rgba(0, 0, 0, 1)">); JSONObject realtime </span>= result.getJSONObject("realtime"<span style="color: rgba(0, 0, 0, 1)">); System.out.printf(</span>"城市:%s%n", result.getString("city"<span style="color: rgba(0, 0, 0, 1)">)); System.out.printf(</span>"天气:%s%n", realtime.getString("info"<span style="color: rgba(0, 0, 0, 1)">)); System.out.printf(</span>"温度:%s%n", realtime.getString("temperature"<span style="color: rgba(0, 0, 0, 1)">)); System.out.printf(</span>"湿度:%s%n", realtime.getString("humidity"<span style="color: rgba(0, 0, 0, 1)">)); System.out.printf(</span>"风向:%s%n", realtime.getString("direct"<span style="color: rgba(0, 0, 0, 1)">)); System.out.printf(</span>"风力:%s%n", realtime.getString("power"<span style="color: rgba(0, 0, 0, 1)">)); System.out.printf(</span>"空气质量:%s%n", realtime.getString("aqi"<span style="color: rgba(0, 0, 0, 1)">)); } </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> { System.out.println(</span>"调用接口失败:" + jsonObject.getString("reason"<span style="color: rgba(0, 0, 0, 1)">)); } } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e) { e.printStackTrace(); } } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * get方式的http请求 * * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> httpUrl 请求地址 * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> 返回结果 </span><span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span><span style="color: rgba(0, 0, 0, 1)"> String doGet(String httpUrl, String queryParams) { HttpURLConnection connection </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">; InputStream inputStream </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">; BufferedReader bufferedReader </span>= <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">; String result </span>= <span style="color: rgba(0, 0, 255, 1)">null</span>;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 返回结果字符串</span> <span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> { </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建远程url连接对象</span> URL url = <span style="color: rgba(0, 0, 255, 1)">new</span> URL(<span style="color: rgba(0, 0, 255, 1)">new</span> StringBuffer(httpUrl).append("?"<span style="color: rgba(0, 0, 0, 1)">).append(queryParams).toString()); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 通过远程url连接对象打开一个连接,强转成httpURLConnection类</span> connection =<span style="color: rgba(0, 0, 0, 1)"> (HttpURLConnection) url.openConnection(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置连接方式:get</span> connection.setRequestMethod("GET"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置连接主机服务器的超时时间:15000毫秒</span> connection.setConnectTimeout(5000<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置读取远程返回的数据时间:60000毫秒</span> connection.setReadTimeout(6000<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 发送请求</span> 

connection.connect();

 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 通过connection连接,获取输入流</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (connection.getResponseCode() == 200<span style="color: rgba(0, 0, 0, 1)">) { inputStream </span>=<span style="color: rgba(0, 0, 0, 1)"> connection.getInputStream(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 封装输入流,并指定字符集</span> bufferedReader = <span style="color: rgba(0, 0, 255, 1)">new</span> BufferedReader(<span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> InputStreamReader(inputStream, StandardCharsets.UTF_8)); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 存放数据</span> StringBuilder sbf = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuilder(); String temp; </span><span style="color: rgba(0, 0, 255, 1)">while</span> ((temp = bufferedReader.readLine()) != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) { sbf.append(temp); sbf.append(System.getProperty(</span>"line.separator"<span style="color: rgba(0, 0, 0, 1)">)); } result </span>=<span style="color: rgba(0, 0, 0, 1)"> sbf.toString(); } } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (IOException e) { e.printStackTrace(); } </span><span style="color: rgba(0, 0, 255, 1)">finally</span><span style="color: rgba(0, 0, 0, 1)"> { </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 关闭资源</span> <span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> bufferedReader) { </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> { bufferedReader.close(); } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (IOException e) { e.printStackTrace(); } } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">null</span> !=<span style="color: rgba(0, 0, 0, 1)"> inputStream) { </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> { inputStream.close(); } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (IOException e) { e.printStackTrace(); } } </span><span style="color: rgba(0, 0, 255, 1)">if</span> (connection != <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) { connection.disconnect();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 关闭远程连接</span> 

}

讯享网 } </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> result; } </span><span style="color: rgba(0, 128, 0, 1)">/</span><span style="color: rgba(0, 128, 0, 1)"> * 将map型转为请求参数型 * * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> data * </span><span style="color: rgba(128, 128, 128, 1)">@return</span> <span style="color: rgba(0, 128, 0, 1)">*/</span> <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> String urlencode(Map&lt;String, ?&gt;<span style="color: rgba(0, 0, 0, 1)"> data) { StringBuilder sb </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> StringBuilder(); </span><span style="color: rgba(0, 0, 255, 1)">for</span> (Map.Entry&lt;String, ?&gt;<span style="color: rgba(0, 0, 0, 1)"> i : data.entrySet()) { </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> { sb.append(i.getKey()).append(</span>"=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&amp;"<span style="color: rgba(0, 0, 0, 1)">); } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (UnsupportedEncodingException e) { e.printStackTrace(); } } String result </span>=<span style="color: rgba(0, 0, 0, 1)"> sb.toString(); result </span>= result.substring(0, result.lastIndexOf("&amp;"<span style="color: rgba(0, 0, 0, 1)">)); </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> result; } 

}


小讯
上一篇 2025-05-11 14:30
下一篇 2025-06-10 15:44

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/148888.html