JSP从WebService取天气预报数据,很精简的代码[效果图]。

4627人阅读 评论(3) 收藏 举报

JSP从WebService取天气预报数据。

网上也有相关的代码,不过比较繁琐,我改进了一下。很简单地实现了。

package com.xxx.web;

import java.io.*;
import java.net.*;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Weather {
 private static String _url = "http://www.wopos.com/webservice/Weather.asmx/getWeather?mCity=";

 private Weather() {
 }

 /**
  * @param cityName
  * @return
  */
 private static InputStream getSoapInputStream(String cityName) {
  try {
   /*
    * URL url = new URL(_url + cityName); HttpURLConnection hc =
    * (HttpURLConnection) url.openConnection(); hc.connect();
    * InputStream urlStream = hc.getInputStream(); return urlStream;
    */
   return new URL(_url + cityName).openStream();
  } catch (Exception ex) {
   return null;
  }

 }
 
 /**
  * 用W3C DOM对返回的XML进行解释
  * @param cityName
  * @return
  */
 public static String getWeatherByCityName(String cityName) {
  try {
   Document doc;
   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
   dbf.setNamespaceAware(true);
   DocumentBuilder db = dbf.newDocumentBuilder();
   InputStream is = getSoapInputStream(cityName);
   if (is == null){
    return null;
   }
   doc = db.parse(is);
   NodeList nl = doc.getElementsByTagName("string");
   Node n = nl.item(0);
   String weather = n.getFirstChild().getNodeValue();
   is.close();
   return weather;
  } catch (Exception e) {
   e.printStackTrace();
   return null;
  }
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  System.out.print(getWeatherByCityName("北京"));
 }
}

得到一个String对象,剩下的就很好处理了。

最终实现效果:
最终实现效果

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2303294次
    • 积分:21513
    • 等级:
    • 排名:第340名
    • 原创:301篇
    • 转载:153篇
    • 译文:4篇
    • 评论:478条
    最新评论