我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

当前位置: 首页 > 知识 > WebService 获取天气预报

工具类

package com.ambow.invoic.utils;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.util.HashMap;import java.util.Map;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class WeatherUtil {     InputStream inStream;       Element root;       public InputStream getInStream() {           return inStream;       }       public void setInStream(InputStream inStream) {           this.inStream = inStream;       }       public Element getRoot() {           return root;       }       public void setRoot(Element root) {           this.root = root;       }       public WeatherUtil() {       }       /** * 通过输入流来获取新浪接口信息 * @param inStream */       public WeatherUtil(InputStream inStream) {           if (inStream != null) {               this.inStream = inStream;               DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();               try {                   DocumentBuilder domBuilder = domfac.newDocumentBuilder();                   Document doc = domBuilder.parse(inStream);                   root = doc.getDocumentElement();               } catch (ParserConfigurationException e) {                   e.printStackTrace();               } catch (SAXException e) {                   e.printStackTrace();               } catch (IOException e) {                   e.printStackTrace();               }           }       }       public WeatherUtil(String path) {           InputStream inStream = null;           try {               inStream = new FileInputStream(path);           } catch (FileNotFoundException e1) {               e1.printStackTrace();           }           if (inStream != null) {               this.inStream = inStream;               DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();               try {                   DocumentBuilder domBuilder = domfac.newDocumentBuilder();                   Document doc = domBuilder.parse(inStream);                   root = doc.getDocumentElement();               } catch (ParserConfigurationException e) {                   e.printStackTrace();               } catch (SAXException e) {                   e.printStackTrace();               } catch (IOException e) {                   e.printStackTrace();               }           }       }       public WeatherUtil(URL url) {           InputStream inStream = null;           try {               inStream = url.openStream();           } catch (IOException e1) {               e1.printStackTrace();           }           if (inStream != null) {               this.inStream = inStream;               DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();               try {                   DocumentBuilder domBuilder = domfac.newDocumentBuilder();                   Document doc = domBuilder.parse(inStream);                   root = doc.getDocumentElement();               } catch (ParserConfigurationException e) {                   e.printStackTrace();               } catch (SAXException e) {                   e.printStackTrace();               } catch (IOException e) {                   e.printStackTrace();               }           }       }       /** * * @param nodes * @return 单个节点多个值以分号分隔 */       public Map<String, String> getValue(String[] nodes) {           if (inStream == null || root==null) {               return null;           }           Map<String, String> map = new HashMap<String, String>();           // 初始化每个节点的值为null          for (int i = 0; i < nodes.length; i++) {               map.put(nodes[i], null);           }           // 遍历第一节点          NodeList topNodes = root.getChildNodes();           if (topNodes != null) {               for (int i = 0; i < topNodes.getLength(); i++) {                   Node book = topNodes.item(i);                   if (book.getNodeType() == Node.ELEMENT_NODE) {                       for (int j = 0; j < nodes.length; j++) {                           for (Node node = book.getFirstChild(); node != null; node = node.getNextSibling()) {                               if (node.getNodeType() == Node.ELEMENT_NODE) {                                   if (node.getNodeName().equals(nodes[j])) {                                       String val = node.getTextContent();                                       String temp = map.get(nodes[j]);                                       if (temp != null && !temp.equals("")) {                                           temp = temp + ";" + val;                                       } else {                                           temp = val;                                       }                                       map.put(nodes[j], temp);                                   }                               }                           }                       }                   }               }           }           return map;       }      /* public static void main(String[] args) throws UnsupportedEncodingException { System.out.println("请输入您需要查询的地点:"); Scanner input = new Scanner(System.in); String city = input.next(); String city_url = URLEncoder.encode(city, "GBK"); String link="http://php.weather.sina.com.cn/xml.php?city="+city_url+"&password=DJOYnieT8234jlsK&day=0"; URL url; try { url = new URL(link); WeatherUtil parser = new WeatherUtil(url); String[] nodes = {"city","status1","temperature1","status2","temperature2; Map<String, String> map = parser.getValue(nodes); System.out.println(map.get(nodes[0])+" 今天白天:"+map.get(nodes[1])+" 最高温度:"+map.get(nodes[2])+"℃ 今天夜间:"+map.get(nodes[3])+" 最低温度:"+map.get(nodes[4])+"℃ "); } catch (MalformedURLException e) { e.printStackTrace(); } } */}
controller中ajax方法//天气预报(AJAX)    @RequestMapping("weather")    public void weather(HttpSession session,HttpServletResponse response) throws Exception{        String city_url = URLEncoder.encode("昆山", "GBK");       //定义需要获取天气信息的城市和编码格式        String link="http://php.weather.sina.com.cn/xml.php?city="+city_url+"&password=DJOYnieT8234jlsK&day=0";  //气象台接口地址        URL url;  //声明地址对象        try {              url = new URL(link);  //生成url            WeatherUtil parser = new WeatherUtil(url);  //将url交给工具类处理返回天气信息            String[] nodes = {"city","status1","temperature1","status2","temperature2;  //定义一个接受天气信息的字符串数组            Map<String, String> map = parser.getValue(nodes);                             //天气信息转换为Map对象            String weather=map.get(nodes[0])+" 今天白天:"+map.get(nodes[1])+" 最高温度:"+map.get(nodes[2])+"℃ 今天夜间:"+map.get(nodes[3])+" 最低温度:"+map.get(nodes[4])+"℃ "; //便利数据生成信息字符串            //System.out.println(weather);             response.setCharacterEncoding("utf-8");              response.getWriter().println(weather);      //使用AJAX将天气信息返回            session.setAttribute("weather", weather);   //防止丢失将天气信息同时放入session中        } catch (MalformedURLException e) {              e.printStackTrace();          }      }

jsp

$(function(){ $.ajax({            url:'weather.htm',            type:"post",            async:false,                      dataType:"text",              success:function(data){            document.getElementById("weather").innerHTML=data;            }            });        }

你可以在jsp页面中自己写个 然后直接访问页面

免责声明:本站内容(文字信息+图片素材)来源于互联网公开数据整理或转载,仅用于学习参考,如有侵权问题,请及时联系本站删除,我们将在5个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)

我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

132-7207-3477

上班时间

周一到周五 09:00-18:00

二维码
线