好多人要老问我,今天上代码,Copy到工程就用了
package weather;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtils {
public static String getWeekOfDate(Date dt) {
String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
public static String getYear(){
Calendar calendar = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String time = format.format(calendar.getTime());
return time;
}
}
package weather;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class weather {
private static String SERVICES_HOST = "www.webxml.com.cn";
private static String WEATHER_SERVICES_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/";
private static String WEATHER_QUERY_URL = WEATHER_SERVICES_URL
+ "getWeather?theUserID=&theCityCode=";
/**
* 城市代码 / 镇江: 1954
*/
private static int CITICODE = 1954;
public static void main(String[] args) throws Exception {
String desc = "今天是" +DateUtils.getYear() + ","
+ DateUtils.getWeekOfDate(new Date());
desc += new weather().getWeatherStr();
System.out.println(desc);
}
public InputStream getSoapInputStream(String url) {
InputStream inputStream = null;
try {
URL urlObj = new URL(url);
URLConnection urlConn = urlObj.openConnection();
urlConn.setRequestProperty("Host", SERVICES_HOST); // 具体webService相关
urlConn.connect();
inputStream = urlConn.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return inputStream;
}
public String getWeatherStr() {
String desc = "";
try {
List
if (weatherList != null && weatherList.size() > 7) {
String tianqi = weatherList.get(7);
if (tianqi.contains("日")) {
tianqi = tianqi.substring(tianqi.indexOf("日") + 1);
}
String wendu = weatherList.get(8);
desc += ",天气" + tianqi;
desc += " ,";
desc += wendu.replace("℃", "度").replace("/", "--");
}
} catch (Exception e) {
e.printStackTrace();
return desc;
}
return desc;
}
public List
List
Document document;
DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance();
documentBF.setNamespaceAware(true);
try {
DocumentBuilder documentB = documentBF.newDocumentBuilder();
InputStream inputStream = getSoapInputStream(WEATHER_QUERY_URL + cityCode);
document = documentB.parse(inputStream);
NodeList nl = document.getElementsByTagName("string");
int len = nl.getLength();
for (int i = 0; i < len; i++) {
Node n = nl.item(i);
String weather = n.getFirstChild().getNodeValue();
weatherList.add(weather);
}
inputStream.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (DOMException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return weatherList;
}
}
下面是介绍
今天遇到的需求是显示一个“今天是星期五 2010年9月26日 天气晴,19-25度”这样的网站提示信息。
需要用到公共的天气预报webservice。
- /**
- *
- *
- */
- public class WeatherService {
- private static String SERVICES_HOST = "www.webxml.com.cn";
- private static String WEATHER_SERVICES_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/";
- private static String WEATHER_QUERY_URL = WEATHER_SERVICES_URL + "getWeather?theUserID=&theCityCode=";
- /**
- * 城市代码 / 武汉
- */
- private static int CITICODE = 1582;
- public static void main(String[] args) throws Exception {
- String desc = "今天是星期" + DateUtils.getCurrentWeek() + " " + DateUtils.getCurrent("yyyy年MM月dd日") + " ";
- desc += new WeatherService().getWeatherStr();
- System.out.println(desc);
- }
- public InputStream getSoapInputStream(String url) {
- InputStream inputStream = null;
- try {
- URL urlObj = new URL(url);
- URLConnection urlConn = urlObj.openConnection();
- urlConn.setRequestProperty("Host", SERVICES_HOST); //具体webService相关
- urlConn.connect();
- inputStream = urlConn.getInputStream();
- } catch(MalformedURLException e) {
- e.printStackTrace();
- } catch(IOException e) {
- e.printStackTrace();
- }
- return inputStream;
- }
- public String getWeatherStr() {
- String desc = "";
- try {
- List
weatherList = getWeather(CITICODE); - if(weatherList != null && weatherList.size() > 7) {
- String tianqi = weatherList.get(7);
- if(tianqi.contains("日")) {
- tianqi = tianqi.substring(tianqi.indexOf("日") + 1);
- }
- String wendu = weatherList.get(8);
- desc += "天气" + tianqi;
- desc += " ,";
- desc += wendu.replace("℃", "度").replace("/", "-");
- }
- } catch(Exception e) {
- e.printStackTrace();
- return desc;
- }
- return desc;
- }
- public List
getWeather( int cityCode) { - List
weatherList = new ArrayList (); - Document document;
- DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance();
- documentBF.setNamespaceAware(true);
- try {
- DocumentBuilder documentB = documentBF.newDocumentBuilder();
- InputStream inputStream = getSoapInputStream(WEATHER_QUERY_URL + cityCode);
- document = documentB.parse(inputStream);
- NodeList nl = document.getElementsByTagName("string");
- int len = nl.getLength();
- for(int i = 0; i < len; i++) {
- Node n = nl.item(i);
- String weather = n.getFirstChild().getNodeValue();
- weatherList.add(weather);
- }
- inputStream.close();
- } catch(UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch(DOMException e) {
- e.printStackTrace();
- } catch(ParserConfigurationException e) {
- e.printStackTrace();
- } catch(SAXException e) {
- e.printStackTrace();
- } catch(IOException e) {
- e.printStackTrace();
- }
- return weatherList;
- }
- }
这里的citycode是城市代码,由于我只要用武汉的,这里已经定义好了,大家想找自己的城市,可以去这里查:
http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx
获得省份通过getRegionProvince,然后根据省IDgetSupportCityString获得CityCode
说下程序:
这个服务的返回结果是xml,如下:
- xml version="1.0" encoding="UTF-8"?>
- -
- <ArrayOfString xmlns="http://WebXml.com.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <string>湖北string>
- <string>武汉string>
- <string>57494string>
- <string>57494.jpgstring>
- <string>2012-7-11 16:32:58string>
- <string>29℃/35℃string>
- <string>7月11日 多云string>
- <string>无持续风向微风string>
- <string>1.gifstring>
- <string>1.gifstring>
- <string>今日天气实况:气温:34℃;风向/风力:西南风 3级;湿度:60%;空气质量:较差;紫外线强度:中等string>
- <string>穿衣指数:天气炎热,建议着短衫、短裙、短裤、薄型T恤衫、敞领短袖棉衫等清凉夏季服装。
- 感冒指数:各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。
- 运动指数:天气较好,无雨水困扰,但考虑气温很高,请注意适当减少运动时间并降低运动强度,运动后补充水分。
- 洗车指数:较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。
- 晾晒指数:天气不错,适宜晾晒。赶紧把久未见阳光的衣物搬出来吸收一下太阳的味道吧!
- 旅游指数:多云,同时有微风相伴,但温度较高,天气热,请尽量避免高温时段外出,若外出请注意防暑降温和防晒。
- 路况指数:天气较好,路面比较干燥,路况较好,不过天气有点热,定期让车辆休息。
- 舒适度指数:天气炎热,且空气湿度较大,会使您感到很闷热,很不舒适。
- 空气污染指数:气象条件较不利于空气污染物稀释、扩散和清除,请适当减少室外活动时间。
- 紫外线指数:属中等强度紫外线辐射天气,外出时建议涂擦SPF高于15、PA+的防晒护肤品,戴帽子、太阳镜。string>
- <string>26℃/34℃string>
- <string>7月12日 阴转小雨string>
- <string>无持续风向微风string>
- <string>2.gifstring>
- <string>7.gifstring>
- <string>25℃/30℃string>
- <string>7月13日 大雨转小雨string>
- <string>无持续风向微风string>
- <string>9.gifstring>
- <string>7.gifstring>
- <string>武汉市位于江汉平原东部,长江中游与长江、汉水交汇处。东经113°41′-115°05′,北纬29°58′-31°22′。武汉市地理位置优越,长江及其最大支流汉江交汇于此,将武汉市区天然分成汉口、汉阳和武昌三镇,武汉是我国水陆交通枢纽,控长江中游之咽喉,扼南北交通之要冲,素有“九省通衢”之称,现全市货运吞吐量达亿吨以上。优越的地理位置,成为历代兵家争夺的战略要地。三国时,武汉东湖附近曾是刘备、孙权、曹操进行军事、政治活动的场所,现在留下的有刘备郊天台、吴王庙、曹操庙、洪山宝塔等古建筑。武汉现已发展为中国中部地区工业、金融、商业、科学、文化教育中心。武汉市属亚热带湿润季风气候,雨量充沛、日照充足,四季分明。总体气候环境良好,近几年30年来,年均降雨量1269毫米,且多集中在6-8月。年均气温15.8℃-17.5℃,年无霜期一般为211天-272天,年日照总时数1810小时-2100小时。景观:武当山、长江三峡、神农架等。string>
- ArrayOfString>
由于这里我只需要显示今天的天气,所以对string提取了7和8那两段进行处理。
测试:执行main方法,结果如下:
今天是星期三 2012年07月11日 天气 多云 ,29度-35度