`

实现天气预报功能

    博客分类:
  • Java
阅读更多
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import net.sf.json.JSONObject;
/**
 * 得到未来6天的天气(含今天)
 * @author Chewl
 *
 */
public class Weather {
    String Ctiyid;
    URLConnection connectionData;
    StringBuilder sb;
    BufferedReader br;// 读取data数据流
    JSONObject jsonData;
    JSONObject info;
    static String zhuangkuang ;
    public Weather(String Cityid) throws IOException ,NullPointerException{
        // 解析本机ip地址
        this.Ctiyid = Cityid;
        // 连接中央气象台的API
        URL url = new URL("http://m.weather.com.cn/data/" + Ctiyid + ".html");
        connectionData = url.openConnection();
        connectionData.setConnectTimeout(10000);
        try {
            br = new BufferedReader(new InputStreamReader(
                    connectionData.getInputStream(), "UTF-8"));
            sb = new StringBuilder();
            String line = null;
            while ((line = br.readLine()) != null)
                sb.append(line);

        } catch (SocketTimeoutException e) {
            Client.logger.error("加载天气预报时连接超时", e);
        } catch (FileNotFoundException e) {
        	Client.logger.error("加载天气预报文件出错", e);
        } catch (Exception e){
        	Client.logger.error("天气预报出现未知错误", e);
        }
        String datas = sb.toString();
        jsonData = JSONObject.fromObject(datas);
        info = jsonData.getJSONObject("weatherinfo");

        //得到1到6天的天气情况
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
        for(int i=1;i<=1;i++){
        	//得到未来6天的日期
        	Calendar cal = Calendar.getInstance();
        	cal.add(Calendar.DAY_OF_YEAR, i-1);

        	Map<String,Object> map = new HashMap<String, Object>();
        	map.put("weather", info.getString("weather"+i).toString());//天气
        	map.put("temp", info.getString("temp"+i).toString());//温度
        	list.add(map);
        }
        //控制台打印出天气
       for(int j=0;j<list.size();j++){
    	   Map<String,Object> wMap = list.get(j);
    	   zhuangkuang = (String) wMap.get("weather") + "           " + (String) wMap.get("temp");
    	}
    }

    protected static String haveConfig(String cityname) {
    	Properties prop = new Properties();
		InputStream in = null;
		String citycode = null;
		String bath= Weather.class.getResource("/").getPath();
		try {
			in = new FileInputStream(bath + "/city.properties");
			prop.load(in);
			citycode = prop.getProperty(cityname);
		} catch (Exception e) {

		} finally {
			try {
				if (in != null)
					in.close();
			} catch (IOException e) {

			}
		}
		return citycode;
	}

    public static String search(String cityname){
        try {
        	String citycode = haveConfig(cityname);
          //  new Weather("101210101");     // 101010100(北京)就是你的城市代码
        	new Weather(citycode);     // 101010100(北京)就是你的城市代码
        } catch (Exception e) {
            e.printStackTrace();
        }
        return zhuangkuang ;
    }

}


需要用到一个配置文件,里面包含各个天气的城市代码
分享到:
评论

相关推荐

    AJAX技术来实现天气预报功能

    在实现天气预报功能的例子中,AJAX使得网页可以在不刷新的情况下获取并更新天气信息,提升了用户的浏览体验。随着前端技术的发展,AJAX已经成为现代Web开发不可或缺的一部分,结合其他先进技术如React、Vue等,可以...

    webservice 实现天气预报功能

    在本例中,我们关注的是使用Web Service实现天气预报功能,这涉及到SOAP(Simple Object Access Protocol)协议的运用。 SOAP是用于交换结构化信息的协议,它基于XML(Extensible Markup Language)格式,使得数据...

    Android实现天气预报功能

    在Android平台上实现天气预报功能是一项常见的任务,尤其对于开发本地生活服务类应用的开发者来说更是必不可少。本教程将深入探讨如何利用Android技术结合百度地图API来实现这一功能。首先,我们要理解Android应用的...

    安卓实现天气预报功能

    安卓实现天气预报功能,只需传入城市名字即可

    微信小程序实现天气预报功能

    本文实例为大家分享了微信小程序实现天气预报功能的具体代码,供大家参考,具体内容如下 这个案例是仿UC中天气界面做的中间也有点出入,预留了显示当前城市名字和刷新图标的位置,自己可以写下,也可以添加搜索城市...

    ASP.NET程序中使用Yahoo的天气RSS实现天气预报功能源代码

    标题提到的“Yahoo的天气RSS实现天气预报功能”涉及到RSS(Really Simple Syndication)技术。RSS是一种内容发布格式,允许用户订阅和获取网站更新,如新闻、博客或天气预报等。Yahoo提供了一个公开的天气RSS feed,...

    Spring Boot项目:使用第三方天气API接口实现天气预报功能 weather.zip

    Spring Boot项目:使用第三方天气API接口实现天气预报功能;使用redis缓存数据库进行数据缓存 接口示例:http://t.weather.sojson.com/api/weather/city/101010100

    android中实现天气预报功能

    给android安好者一个例子,实现了android 中的天气预报功能,

    C#实现天气预报

    5. **错误处理**:在实现天气预报功能时,需要考虑网络异常、API限制、数据解析错误等情况。可以使用try-catch块来捕获并处理异常,提供友好的错误提示给用户。 6. **异步编程**:由于网络请求是耗时操作,应使用...

    webservice 网页实现天气预报

    - 要实现天气预报功能,通常需要接入第三方气象API,如OpenWeatherMap、AccuWeather、WorldWeatherOnline等。 - 这些API提供了城市、邮政编码、经纬度等查询方式,返回的天气信息包括温度、湿度、风速、天气状况、...

    使用Http连接实现天气预报

    在提供的压缩包“Android定位项目”中,可能包含了实现天气预报功能的完整代码示例,包括定位服务的使用。Android定位服务通常结合Google Play服务的`FusedLocationProviderClient`,它可以获取手机的GPS、Wi-Fi和...

    基于Android,WebService实现天气预报

    在本文中,我们将深入探讨如何基于Android平台利用WebService技术实现天气预报功能。首先,我们要理解Android是Google开发的一款开源移动操作系统,广泛应用于智能手机和平板电脑。而WebService是一种通过互联网交换...

    WebService实现天气预报

    本教程将深入探讨如何利用WebService来实现天气预报功能。 首先,我们需要理解WebService的基本原理。WebService是一种通过HTTP协议传递XML数据的服务。它使用WSDL(Web Service Description Language)定义服务...

    Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计).zip

    Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android Studio实现天气预报APP系统源码(也可做Android本科毕业设计Android ...

    angularjs实现天气预报功能

    在本文中,我们将探讨如何使用AngularJS框架实现天气预报功能,这一功能能够帮助用户了解不同城市的天气情况。AngularJS是一个由Google维护的开源前端JavaScript框架,适用于构建动态Web应用。它能够让开发者使用...

    ASP.NET使用WebService实现天气预报功能

    本文使用Asp.Net (C#)调用互联网上公开的WebServices(http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)来实现天气预报,该天气预报 Web 服务,数据来源于中国气象局http://www.cma.gov.cn/,数据每2.5...

    android实现天气预报

    在Android平台上,实现天气预报功能通常涉及到多个技术层面和组件的整合。首先,我们要了解`Android Widget`,这是Android系统提供的一种小型应用组件,可以直接在用户的主屏幕上显示实时信息,如时间、天气、新闻等...

    webservice实现天气预报

    在本案例中,我们将探讨如何使用Web服务来实现天气预报功能。天气预报Web服务通常涉及提供当前天气状况、未来几天的预测以及相关气象信息。 一、Web服务的基本概念 1. Web服务是通过HTTP协议传输数据的服务,可以被...

    ESP8266+OLED屏实现天气预报+温度显示+NTP时间同步6屏带中文显示V8.2

    为了实现天气预报功能,ESP8266需要连接到网络并获取天气API的数据。常见的免费API有OpenWeatherMap或Weather Underground,它们提供实时和预测天气信息的JSON格式数据。通过HTTP GET请求,ESP8266可以获取这些数据...

Global site tag (gtag.js) - Google Analytics