zoukankan      html  css  js  c++  java
  • 新浪天气api

    package com.smartdot.dcu;
    
    /** 
     * java获取新浪天气预报代码 
     */  
    import java.io.FileNotFoundException;  
    import java.io.IOException;  
    import java.io.InputStream;  
    import java.io.FileInputStream;  
    import java.io.UnsupportedEncodingException;  
    import java.net.MalformedURLException;  
    import java.net.URL;  
    import java.net.URLEncoder;  
    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;  
    
    /** 
     * 解析xml文档,包括本地文档和url 
     * 
     */  
    public class CommonsWeatherUtils {  
    
        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 CommonsWeatherUtils() {  
    
        }  
    
        /** 
        * 通过输入流来获取新浪接口信息 
         * @param inStream 
         */  
        public CommonsWeatherUtils(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 CommonsWeatherUtils(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 CommonsWeatherUtils(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 String getWeather(String address){
            String weathers = "";
            String addressGBK = "";
            try {
                addressGBK = URLEncoder.encode(address, "GBK");
            } catch (UnsupportedEncodingException e2) {
                e2.printStackTrace();
            }
    
    
            String link = "http://php.weather.sina.com.cn/xml.php?city="+addressGBK+"&password=DJOYnieT8234jlsK&day=0";
    
            URL url;  
    
            try {  
                url = new URL(link);  
                CommonsWeatherUtils parser = new CommonsWeatherUtils(url); 
                //    城市   白天天气,白天温度,夜晚天气,夜晚温度,白天风向,白天风力,夜晚风向,夜晚风力,污染指数,污染扩散指数
                String[] nodes = {"city","status1","temperature1","status2","temperature2","direction1","power1","direction2","power2","pollution_l","pollution_s"};  
                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])+"℃ "+map.get(nodes[5])+map.get(nodes[6])+
                        map.get(nodes[7])+map.get(nodes[8])+map.get(nodes[9])+map.get(nodes[10]));
                weathers = 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();  
            } 
    
    
    
    
            return weathers;
        }
    
    
    
        public static void main(String[] args) { 
    
            CommonsWeatherUtils cwu = new CommonsWeatherUtils();
            System.out.println(cwu.getWeather("大连"));
    
    
            //String link="http://php.weather.sina.com.cn/xml.php?city=%D6%D8%C7%EC&password=DJOYnieT8234jlsK&day=0";  
            //String link = "http://php.weather.sina.com.cn/search.php?city=%B4%F3%C1%AC&dpc=1";
    //      String link = "http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0";
    //        try {  
    //            System.out.println(URLEncoder.encode("北京", "GBK"));  
    //        } catch (UnsupportedEncodingException e1) {  
    //            // TODO Auto-generated catch block  
    //            e1.printStackTrace();  
    //        }  
    //          
    //        URL url;  
    //          
    //        try {  
    //              
    //            url = new URL(link);  
    //            CommonsWeatherUtils parser = new CommonsWeatherUtils(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();  
    //        }  
    
        }  
    }  
    
    
  • 相关阅读:
    django错误参考
    Pyhton模块学习
    jmeter
    SQL SERVER 2008
    touch的属性
    Sql Server Alter语句
    安装LoadRunner提示缺少vc2005_sp1_with_atl..
    sql语句
    数据库的知识
    十天学会<div+css>横向导航菜单和纵向导航菜单
  • 原文地址:https://www.cnblogs.com/murphyyy/p/10002759.html
Copyright © 2011-2022 走看看