`
ztfjava
  • 浏览: 71307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中如何获取天气信息

阅读更多
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
 
public class WeatherReport {  
      
    /** 
     * 发送请求到GOOGLE获取天气信息页面 
     * @param city 
     * @return 
     * @throws Exception 
     */ 
    @SuppressWarnings("deprecation")  
    private static String getInputStream(String city) {  
        try {  
            HttpClient httpClient = new HttpClient();
            //System.out.println("city========="+city);
            String hostUrl = "http://www.google.cn/search?hl=zh-CN&q=tq%20" + URLEncoder.encode(city);
            //System.out.println("hostUrl========="+hostUrl);
            GetMethod getMethod = new GetMethod(hostUrl);  
            // 使用系统提供的默认的恢复策略  
            getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,  new DefaultHttpMethodRetryHandler());  
            try {  
                // 执行getMethod  
                int statusCode = httpClient.executeMethod(getMethod);  
                if (statusCode != HttpStatus.SC_OK) {  
                    System.err.println("Method failed: " + getMethod.getStatusLine());  
                }  
                String result = getMethod.getResponseBodyAsString();  
                return result;  
            } catch (HttpException e) {  
                // 发生致命的异常,可能是协议不对或者返回的内容有问题  
                //System.out.println("Please check your provided http address!");  
                e.printStackTrace();  
            } catch (IOException e) {  
                // 发生网络异常  
                e.printStackTrace();  
            } finally {  
                // 释放连接  
                getMethod.releaseConnection();  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
            return null;  
        }  
        return null;  
    }  
 
    /** 
     * 将获取的包含天气页面的信息解析出相关的天气信息 
     * @param result 
     * @identifier 
     * @return 
     */ 
    public static String readText(String result, String identifier) {  
        Pattern shopNumberPattern = Pattern.compile(identifier);  
        Matcher shopNamMatcher = shopNumberPattern.matcher(result);  
        if (shopNamMatcher.find())  
            return shopNamMatcher.group(1);  
        return "";  
    }  
 
    public static String getWeather(String city) {  
        String result = readText(getInputStream(city), "<div style=\"padding:5px 5px 5px 0;float:left\">(.+?)</div></div>");  
        String weatherDetail = readText(result, "<div style=\"font-size:140%\">(.+?)%");  
        weatherDetail = weatherDetail.replaceAll("<div>", "").replaceAll("</div>", "").replaceAll("<br>", "").replace(":", ":");  
        weatherDetail = weatherDetail.replaceAll(" / ","℃~");
        weatherDetail = weatherDetail.replaceAll("<b>","");
        weatherDetail = weatherDetail.replaceAll("</b>","&nbsp;&nbsp;");
        weatherDetail = weatherDetail.replaceAll("°C","℃");
        weatherDetail = weatherDetail.replaceAll("当前: ","");
        weatherDetail = weatherDetail.replaceAll("当前:","");
        return weatherDetail;  
    }  
 
   
    public static Map getWeatherBySale(String saleName) {
            String weather = "";
            Map resMap=null;
            String city = saleName.substring(0,2);
            weather = WeatherReport.getInputStream(city);
            if (weather==null || weather.equals("")){
                    city = saleName.substring(0,3);
                    weather = WeatherReport.getInputStream(city);
                    if (weather==null || weather.equals("")){
                            city = saleName.substring(0,4);
                            weather = WeatherReport.getInputStream(city);
                    }
            }
            if (weather!=null && !weather.equals("")){
                    resMap=new HashMap();
                    weather = weather.replaceAll("\n", "").replaceAll("\t", "").replaceAll("\r", "");;
                    weather = weather.replaceAll(" ", "");
                    weather = weather.substring(0,weather.indexOf("湿度"));
//                weather = city + "&nbsp;&nbsp;" + weather;
                resMap.put("city", city);
                resMap.put("weather", weather);
            }
            return resMap;
    }
    public static void main(String args[]){
                    System.out.println(WeatherReport.getWeather("呼和浩特"));
    }


也可采用第二种方式:用地一个插件
http://www.thinkpage.cn/调用该网站提供的插件模板

可以添加股票的信息 通过如下代码:
<iframe src="http://www.thinkpage.cn/stock/widget.htm?mo=1&or=1&an=1" frameborder="0" scrolling="no" width="200" height="200" allowTransparency="true"></iframe>



分享到:
评论

相关推荐

    java获取天气信息

    在Java编程中,获取天气信息是一项常见的任务,尤其在开发涉及地理位置、旅游或者日常生活助手类的应用时。要实现这一功能,通常需要借助于公开的天气API(应用程序接口),这些API提供JSON或XML格式的天气数据,...

    java获取某地天气

    6. **多线程**:为了不影响主程序的运行,获取天气信息的网络请求可以考虑在后台线程(如使用`ExecutorService`)中执行。 7. **数据展示**:获取到天气信息后,可能需要将数据展示给用户,这可以通过控制台打印、...

    java获取中国各地天气获取demo

    以上就是通过Java获取中国各地天气信息的基本流程,结合数据库操作,可以实现一个实用的应用程序。对于初学者来说,这涉及到了网络编程、数据解析和数据库操作等多个Java核心概念,是一个很好的学习实践项目。

    java获取天气预报

    在获取天气预报的场景中,你需要知道中央气象台的公开API接口地址,然后使用HttpClient发送GET请求。请求成功后,服务器会返回一个包含天气信息的XML文档。解析XML数据,可以使用Java内置的DOM、SAX或JAXB等解析器,...

    Java天气应用程序 - 使用天气API获取实时天气数据并显示给用户

    - 当用户点击按钮时,调用`getUserInput`方法获取输入,然后构建API请求URL,最后通过`sendGetRequest`获取天气信息。 4. **解析JSON数据**: - 解析API响应的JSON数据后,需要提取所需的信息。这可以通过遍历...

    Java获取google天气信息,且能根据ip地址获取所属地天气

    总的来说,实现"Java获取Google天气信息,且能根据IP地址获取所属地天气"这一功能,涉及到的知识点包括:网络请求、数据解析(XML和JSON)、IP地址与地理位置转换、异常处理以及服务的封装和部署。理解并掌握这些...

    java获取新浪天气

    java获取新浪天气

    获取天气预报API,免费接口,项目下载可运行,Java实现

    标题中的“获取天气预报API,免费接口,项目下载可运行,Java实现”表明这是一个关于使用Java语言开发的天气预报API项目,它提供了免费的API接口,并且已经打包为可直接运行的形式。这样的项目通常对开发者来说是很...

    java webservice 获取天气信息

    @Description TODO 天气信息数据来源(http://www.webxml.com.cn/) * 根据城市或地区名称查询获得未来三天内天气情况、现在的天气实况、天气和生活指数: * 调用方法如下:输入参数:theCityName = 城市中文名称...

    java获取新浪天气源码

    以下是一个简单的例子,展示了如何使用`HttpURLConnection`获取天气信息: ```java public WeatherInfo getWeatherInfo(String cityIdOrName) throws IOException { URL url = new URL(...

    天气预报数据获取java代码(风和天气、高德地图)

    本主题将详细介绍如何使用Java语言来获取天气预报数据,特别是通过"风和天气"以及"高德地图"这两个服务提供商。本文将深入探讨相关技术细节和步骤,以便开发者可以有效地集成到自己的项目中。 首先,我们要了解“风...

    java调用天气的接口

    在本例中,使用了 webxml.com.cn 提供的天气预报服务,通过调用其 WebService 来获取天气信息。 6. Java 调用天气接口的应用 Java 调用天气接口的应用非常广泛,如: * 天气预报应用程序 * 气象监控系统 * 旅游...

    java获取新浪天气代码

    java获取新浪天气代码

    Java获取Google的简单天气预报

    在Java编程领域,获取外部数据是一项常见的任务,其中包括获取天气预报信息。本示例中,我们探讨的主题是如何利用Java从Google获取简单的天气预报。通过分析提供的压缩包文件,我们可以了解到一个简单的实现方案。 ...

    java获取天气小工具

    java调用百度天气api解析json的demo,使用gson解析,天气保存在txt文件中,带简略操作界面

    使用Java获取Google的简单天气预报,内有详细代码.

    ### 使用Java获取Google的简单天气预报 #### 概述 本文档将介绍如何使用Java语言来获取Google提供的简单天气预报信息。尽管Google官方已不再直接提供公开的天气API服务,但可以通过第三方API或其他方式间接获取到...

    java基于高德地图实现实时查询天气功能源代码.zip

    java基于高德地图实现实时查询天气功能源代码。基于高德地图实现实时查询天气功能,api二次开发java基于高德地图实现实时查询天气功能源代码。基于高德地图实现实时查询天气功能,api二次开发java基于高德地图实现...

    根据城市名获取天气等详细信息

    该工具类集成的是http://www.webxml.com.cn/的weiservice的接口,直接调用weatherUse中的findAllByCityName,即可根据城市名称获取天气,湿度等详细信息

    java根据城市获取当天天气或一周天

    在Java编程中,获取某个...以上就是使用Java获取城市天气信息的基本步骤和涉及的技术点,实际开发中可能需要根据具体需求进行调整和优化。在实现过程中,学习和理解HTTP协议、JSON解析以及错误处理机制是非常重要的。

    java获取yahoo天气预报代码

    在`WeatherTest`这个文件中,可能包含了上述代码的实现,用于测试和展示如何在Java中获取并解析Yahoo天气预报。这样的代码对学习网络编程、XML解析以及API调用等技能非常有帮助,同时也是构建实用应用程序的一个基础...

Global site tag (gtag.js) - Google Analytics