Java使用YoHoo的天气预报
来源:互联网 发布:天地盖纸盒尺寸算法 编辑:程序博客网 时间:2024/06/08 03:52
今天比较闲,可以自由的学习了,看到公司以前做项目中使用天气预报使用新浪的天气预报,解析过程不仅(ˇˍˇ) 想~大哭.%>_<%........
为客户提供一个天气预报的服务就那么难吗??
于是我在网上搜索终于找到一个比较好的天气预报?yohoo的天气预报,并测试一下可以使用!基本可以满足可以的需求吧?
思路如下:根据查询天气预报的外部的路径输入自己查询的参数这样既可窃取别人网站的果实,怎么样O(∩_∩)O哈哈哈~。
天气预报是非常有用的服务,如果能在网站上集成天气预报,能极大地方便用户查询。
寻遍了国内所有的气象站点,没找见提供Web服务的,太小气了,只能去国外找。www.weather.gov提供一个Web服务,但是死活连不上服务器,估计被屏蔽了,其他提供全球天气预报的有www.weather.com和yahoo,
不过weather.com的服务太麻烦,还需要注册,相比之下,yahoo的天气服务既简单又快速,只需一个http请求,然后解析返回的XML即可获得天气预报。
以北京为例,在weather.yahoo.com查找北京的城市代码为CHXX0008,对应的URL为:
package com.unutrip.weather.ws.xml;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
* 解析天气预报返回的信息(此处由于xml比较小采用DOm解析,^_^)
*
* @author longgangbai
*
*/
public class YahooHandler extends DefaultHandler {
public void startDocument() throws SAXException {
// no op
}
public void endDocument() throws SAXException {
// no op
}
public void startElement(String uri, String localName, String qName,
Attributes attributes)
throws SAXException {
if ("yweather:condition".equals(qName)) {
String s_date = attributes.getValue(3);
try {
Date publish = new SimpleDateFormat(
"EEE, dd MMM yyyy hh:mm a z", Locale.US).parse(s_date);
} catch (Exception e) {
e.printStackTrace();
throw new SAXException("Cannot parse date: " + s_date);
}
} else if ("yweather:forecast".equals(qName)) {
String s_date = attributes.getValue(1);
Date date = null;
try {
date = new SimpleDateFormat("dd MMM yyyy", Locale.US)
.parse(s_date);
} catch (Exception e) {
e.printStackTrace();
throw new SAXException("Cannot parse date: " + s_date);
}
int low = Integer.parseInt(attributes.getValue(2));
int high = Integer.parseInt(attributes.getValue(3));
String text = attributes.getValue(4);
int code = Integer.parseInt(attributes.getValue(5));
System.out.println("Weather: " + text + ", low=" + low + ", high="
+ high);
}
super.startElement(uri, localName, qName, attributes);
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
}
}
package com.unutrip.weather.ws;
import java.io.InputStream;
import java.net.URL;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import com.unutrip.weather.ws.xml.YahooHandler;
/**
* 调用外网的地址的提供的服务信息
* @author longgangbai
*
*/
public class YahooWeather {
public static void main(String[] args) {
URL url;
try {
url = new URL(
"http://xml.weather.yahoo.com/forecastrss?u=c&p=CHXX0008");
InputStream input = url.openStream();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
SAXParser parser = factory.newSAXParser();
parser.parse(input, new YahooHandler());
} catch (Exception e) {
System.out.println(e);
}
}
}
- Java使用YoHoo的天气预报
- 百度天气预报API的使用(java版本)
- Java中使用WebService实现简单的天气预报功能
- Google天气预报API的使用
- 百度天气预报API的使用
- 一个简单的java天气预报
- java 调用天气预报的webservice
- java调用天气预报的webservice
- 使用Java根据经纬度获取Google天气预报
- java天气预报
- 天气预报的web服务的使用
- 使用中国气象局的天气预报webservice,wsdl2java生成JAVA类时报错
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 使用htmlparser获取sohu的天气预报
- 在Qt应用中强制使用横屏或竖屏
- 类的几种关系解释
- Winform窗体中发送HTTP请求 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法
- c# web 后台代码嵌入flash
- 笑话
- Java使用YoHoo的天气预报
- 电视购物解决方案 (呼叫中心+ecshop )
- AT&T汇编与Intel汇编的一些区别
- 2563 递推题
- 关于bi_sector 的问题
- 【转】下载安装离线版维基百科
- c# web 后台嵌入media
- c#写汉字第一个拼音
- UNIX中各种网络异常情况下的处理