`

webservice调用天气服务的可用实例

阅读更多
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.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;   
  
/**@src  http://eric-619.iteye.com/blog/693673*/  
public class WeatherUtil {   
    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 PROVINCE_CODE_URL = WEATHER_SERVICES_URL    
                                              + "getRegionProvince";   
    private static String CITY_CODE_URL = WEATHER_SERVICES_URL   
                                          + "getSupportCityString?theRegionCode=";   
    private static String WEATHER_QUERY_URL = WEATHER_SERVICES_URL   
                                              + "getWeather?theUserID=&theCityCode=";   
       
       
    private WeatherUtil(){}   
       
    public static void main(String[] args) throws Exception{       
        int provinceCode = getProvinceCode("广东");    //3119   
        int cityCode = getCityCode(provinceCode, "深圳");    //974   
        List<String> weatherList = getWeather(cityCode);   
        for(String weather:weatherList){   
           System.out.println(weather);   
        }   
    }   
       
    public static int getProvinceCode(String provinceName){    
        Document document;   
        DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance();   
        documentBF.setNamespaceAware(true);   
        int provinceCode = 0;   
        try{   
            DocumentBuilder documentB = documentBF.newDocumentBuilder();   
            InputStream inputStream = getSoapInputStream(PROVINCE_CODE_URL);    //具体webService相关   
            document = documentB.parse(inputStream);   
            NodeList nodeList = document.getElementsByTagName("string");    //具体webService相关   
            int len = nodeList.getLength();   
            for(int i = 0; i < len; i++){   
                Node n = nodeList.item(i);   
                String result = n.getFirstChild().getNodeValue();   
                String[] address = result.split(",");   
                String pName = address[0];   
                String pCode = address[1];   
                if(pName.equalsIgnoreCase(provinceName)){   
                    provinceCode = Integer.parseInt(pCode);   
                }    
            }   
            inputStream.close();   
        }catch(DOMException e){   
            e.printStackTrace();   
        }catch(ParserConfigurationException e){   
            e.printStackTrace();   
        }catch (SAXException e){       
            e.printStackTrace();   
        }catch(IOException e){   
            e.printStackTrace();   
        }   
        return provinceCode;   
    }   
       
    public static int getCityCode(int provinceCode, String cityName){      
        Document doc;   
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();   
        dbf.setNamespaceAware(true);   
        int cityCode = 0;   
        try{   
            DocumentBuilder db = dbf.newDocumentBuilder();   
            InputStream is = getSoapInputStream(CITY_CODE_URL + provinceCode);    //具体webService相关   
            doc = db.parse(is);   
            NodeList nl = doc.getElementsByTagName("string");    //具体webService相关   
            int len = nl.getLength();   
            for(int i = 0; i < len; i++){   
                Node n = nl.item(i);   
                String result = n.getFirstChild().getNodeValue();   
                String[] address = result.split(",");   
                String cName = address[0];   
                String cCode = address[1];   
                if(cName.equalsIgnoreCase(cityName)){   
                    cityCode = Integer.parseInt(cCode);   
                }   
            }   
            is.close();   
        }catch(DOMException e){   
            e.printStackTrace();   
        }catch(ParserConfigurationException e){   
            e.printStackTrace();   
        }catch (SAXException e){   
            e.printStackTrace();   
        }catch(IOException e) {   
            e.printStackTrace();   
        }   
        return cityCode;   
    }   
       
    public static 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 static List<String> getWeather(int cityCode){   
        List<String> weatherList = new ArrayList<String>();   
        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;   
    }   
       
}  


运行结果:
广东 深圳
深圳
2419
2011/02/17 09:36:23
今日天气实况:气温:13.1℃;风向/风力:西南风 小于3级;湿度:95%;气压:1010.3hPa
空气质量:中;紫外线强度:弱
穿衣指数:建议着薄型套装或牛仔衫裤等春秋过渡装。年老体弱者宜着套装、夹克衫等。
感冒指数:天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。
运动指数:天气较好,请注意适当减少运动时间并降低运动强度,因紫外线强,户外运动注意防晒。
洗车指数:较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。
晾晒指数:多云,适宜晾晒。赶紧把久未见阳光的衣物搬出来吸收一下太阳的味道吧!
旅游指数:多云,有时云会遮挡住阳光,但丝毫不会影响您出行的心情。温度适宜又有微风相伴,很适宜旅游。
路况指数:晴天,条件适宜,路面比较干燥,路况较好。
舒适度指数:白天不太热也不太冷,风力不大,相信您在这样的天气条件下,应会感到比较清爽和舒适。
2月17日 多云
14℃/20℃
无持续风向微风
1.gif
1.gif
2月18日 多云
15℃/22℃
无持续风向微风
1.gif
1.gif
2月19日 小雨
12℃/19℃
无持续风向微风
7.gif
7.gif
2月20日 多云
14℃/17℃
无持续风向微风
1.gif
1.gif
2月21日 多云
15℃/20℃
无持续风向微风
1.gif
1.gif
分享到:
评论

相关推荐

    c# winfrom 调用天气预报的webservice

    在C#项目中,我们需要使用`System.ServiceModel`库来处理WebService调用。可以通过Visual Studio的NuGet包管理器安装这个库,如果尚未包含在项目中。 2. **添加WebService引用** 找到提供天气预报的WebService的...

    天气预报webservice vb调用实例

    在这个"天气预报webservice vb调用实例"中,我们将探讨如何使用Visual Basic(VB)这个编程语言来调用一个天气预报的Web服务,实现获取并显示天气信息的功能。 1. **Web Service介绍** Web Service是一种基于...

    PB调用JAVA WEBSERVICE实例

    标题中的“PB调用JAVA WEBSERVICE实例”指的是使用PowerBuilder(PB)应用程序调用由Java编写的Web服务。在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让...

    asp.net通过WebService调用Java接口全过程

    总结来说,ASP.NET通过WebService调用Java接口的过程主要包括:部署Java WebService、在.NET项目中添加Web引用、配置项目设置、在代码中实例化并调用服务方法,以及理解背后涉及的SOAP和RMI通信机制。这个过程允许...

    WebService服务器端实例

    2. **WSDL(Web服务描述语言)**:WSDL是WebService的接口定义语言,它描述了服务的位置、可用操作以及如何调用这些操作。开发者可以通过WSDL文件了解服务的输入、输出参数及调用方式。 3. **UDDI(统一描述、发现...

    android调用webservice获取天气

    在获取天气预报的实例中,可能需要的参数有城市名、国家代码等,这些参数可以通过URL查询字符串或POST请求体传递。返回的数据通常包含日期、温度、湿度、风向等信息,解析后可以存储在自定义的数据模型类中,便于...

    webservice接口调用实例.doc

    ### WebService接口调用实例详解 #### 一、概述 本文档主要介绍如何实现WebService接口的调用,包括从编写接口、测试、发布到最终在客户端应用中的集成使用全过程。通过对文档标题“WebService接口调用实例”以及...

    QT环境下Webservice服务调用,客户端

    在QT环境下进行Web服务(Webservice)调用是软件开发中的常见需求,特别是当需要与Java环境下的服务器端进行交互时。本篇文章将详细介绍如何在QT中构建客户端,以实现对Java服务器端Webservice服务的有效调用。 ...

    ASP.NET Webservice天气预报实例

    总的来说,"ASP.NET Webservice天气预报实例"是一个实践项目,它展示了如何利用ASP.NET技术构建Web Service来提供实用的服务。这个实例不仅涵盖了ASP.NET Web Service的基础知识,还涉及到HTTP通信、XML数据处理以及...

    webservice实例

    本实例着重于介绍Web服务的使用,特别是调用方法,以帮助读者更好地理解和应用Web服务。 在Web服务中,主要涉及的技术包括SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)和...

    java调用webservice工程

    在调用Web服务过程中,可能会遇到网络错误、服务不可用、数据格式错误等问题,需要编写异常处理代码,捕获并处理可能出现的异常。 总结,Java调用WebService工程涉及到的知识点包括JAX-WS和JAX-RS的使用、...

    定时调用java程序监控webservice或系统可用性

    在IT行业中,对服务或系统的可用性和性能进行监控是至关重要的。Java作为一种广泛使用的编程语言,提供了丰富的工具和方法来实现这一目标。本篇将详细探讨如何利用Java编写定时任务来监控Web服务或系统的可用性,并...

    webService客户端和调用服务

    7. **调用Web服务**:客户端通过实例化服务代理类并调用其方法来发起请求。请求被封装成SOAP消息,然后通过HTTP或HTTPS发送到服务端。服务端处理请求后,返回响应,客户端解析响应内容并进行后续处理。 8. **异常...

    使用axis轻松调用Webservice

    标题“使用axis轻松调用Webservice”涉及到的是在IT领域中如何通过Apache Axis工具来便捷地与Web服务进行交互。Apache Axis是一个开放源代码的Java框架,它允许开发者创建、部署和使用Web服务。这个标题暗示了我们将...

    WebService应用实例

    - **UDDI(Universal Description, Discovery, and Integration)**:一种服务注册和发现机制,使得服务消费者能够找到并了解可用的WebService。 2. **WebService工作原理** - 服务提供者创建一个服务,并通过...

    如何调用webservice

    通过上述分析可以看出,调用WebService的主要步骤包括获取WSDL文件、生成代理类、实例化代理类对象并调用相应方法。这个过程在C#中相对简单明了,只需要掌握基本的C#语法即可完成。此外,还可以通过进一步优化代码...

    客户端编程方式调用webservice

    5. **处理异常**:在调用WebService时,可能会遇到各种异常,如网络问题、服务不可用等。因此,应该包含适当的异常处理代码,确保程序的健壮性。 6. **关闭连接**:调用完成后,记得关闭与WebService的连接,释放...

    C# 调用PHP webservice

    - C#调用SOAP服务:C#中,`System.ServiceModel`命名空间下的`SoapHttpClientProtocol`类(在.NET Framework 4.8及以上版本中已被弃用,但仍然可用)或`System.ServiceModel.ClientBase&lt;T&gt;`类(推荐)用于消费SOAP...

    c#调用Webservice经典例子

    - 调用WebService时应考虑异常处理,如网络错误、服务不可用等。 - 调用完WebService方法后,记得关闭客户端,释放资源: ```csharp client.Close(); ``` 在提供的文档“C#调用webservice天气预报.doc”中,...

    net调用webservice接口例子

    在.NET开发环境中,调用WebService接口是常见的任务之一,尤其在需要与其他系统集成或使用外部服务时。本示例着重讲解如何使用.NET来调用一个特定的WebService接口,即短信发送服务。首先,我们需要理解WebService的...

Global site tag (gtag.js) - Google Analytics