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#项目中,我们需要使用`System.ServiceModel`库来处理WebService调用。可以通过Visual Studio的NuGet包管理器安装这个库,如果尚未包含在项目中。 2. **添加WebService引用** 找到提供天气预报的WebService的...
标题中的“PB调用JAVA WEBSERVICE实例”指的是使用PowerBuilder(PB)应用程序调用由Java编写的Web服务。在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让...
在这个"天气预报webservice vb调用实例"中,我们将探讨如何使用Visual Basic(VB)这个编程语言来调用一个天气预报的Web服务,实现获取并显示天气信息的功能。 1. **Web Service介绍** Web Service是一种基于...
总结来说,ASP.NET通过WebService调用Java接口的过程主要包括:部署Java WebService、在.NET项目中添加Web引用、配置项目设置、在代码中实例化并调用服务方法,以及理解背后涉及的SOAP和RMI通信机制。这个过程允许...
2. **WSDL(Web服务描述语言)**:WSDL是WebService的接口定义语言,它描述了服务的位置、可用操作以及如何调用这些操作。开发者可以通过WSDL文件了解服务的输入、输出参数及调用方式。 3. **UDDI(统一描述、发现...
在获取天气预报的实例中,可能需要的参数有城市名、国家代码等,这些参数可以通过URL查询字符串或POST请求体传递。返回的数据通常包含日期、温度、湿度、风向等信息,解析后可以存储在自定义的数据模型类中,便于...
### WebService接口调用实例详解 #### 一、概述 本文档主要介绍如何实现WebService接口的调用,包括从编写接口、测试、发布到最终在客户端应用中的集成使用全过程。通过对文档标题“WebService接口调用实例”以及...
在QT环境下进行Web服务(Webservice)调用是软件开发中的常见需求,特别是当需要与Java环境下的服务器端进行交互时。本篇文章将详细介绍如何在QT中构建客户端,以实现对Java服务器端Webservice服务的有效调用。 ...
总的来说,"ASP.NET Webservice天气预报实例"是一个实践项目,它展示了如何利用ASP.NET技术构建Web Service来提供实用的服务。这个实例不仅涵盖了ASP.NET Web Service的基础知识,还涉及到HTTP通信、XML数据处理以及...
本实例着重于介绍Web服务的使用,特别是调用方法,以帮助读者更好地理解和应用Web服务。 在Web服务中,主要涉及的技术包括SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)和...
在调用Web服务过程中,可能会遇到网络错误、服务不可用、数据格式错误等问题,需要编写异常处理代码,捕获并处理可能出现的异常。 总结,Java调用WebService工程涉及到的知识点包括JAX-WS和JAX-RS的使用、...
在IT行业中,对服务或系统的可用性和性能进行监控是至关重要的。Java作为一种广泛使用的编程语言,提供了丰富的工具和方法来实现这一目标。本篇将详细探讨如何利用Java编写定时任务来监控Web服务或系统的可用性,并...
7. **调用Web服务**:客户端通过实例化服务代理类并调用其方法来发起请求。请求被封装成SOAP消息,然后通过HTTP或HTTPS发送到服务端。服务端处理请求后,返回响应,客户端解析响应内容并进行后续处理。 8. **异常...
标题“使用axis轻松调用Webservice”涉及到的是在IT领域中如何通过Apache Axis工具来便捷地与Web服务进行交互。Apache Axis是一个开放源代码的Java框架,它允许开发者创建、部署和使用Web服务。这个标题暗示了我们将...
- **UDDI(Universal Description, Discovery, and Integration)**:一种服务注册和发现机制,使得服务消费者能够找到并了解可用的WebService。 2. **WebService工作原理** - 服务提供者创建一个服务,并通过...
通过上述分析可以看出,调用WebService的主要步骤包括获取WSDL文件、生成代理类、实例化代理类对象并调用相应方法。这个过程在C#中相对简单明了,只需要掌握基本的C#语法即可完成。此外,还可以通过进一步优化代码...
5. **处理异常**:在调用WebService时,可能会遇到各种异常,如网络问题、服务不可用等。因此,应该包含适当的异常处理代码,确保程序的健壮性。 6. **关闭连接**:调用完成后,记得关闭与WebService的连接,释放...
- C#调用SOAP服务:C#中,`System.ServiceModel`命名空间下的`SoapHttpClientProtocol`类(在.NET Framework 4.8及以上版本中已被弃用,但仍然可用)或`System.ServiceModel.ClientBase<T>`类(推荐)用于消费SOAP...
- 调用WebService时应考虑异常处理,如网络错误、服务不可用等。 - 调用完WebService方法后,记得关闭客户端,释放资源: ```csharp client.Close(); ``` 在提供的文档“C#调用webservice天气预报.doc”中,...
在.NET开发环境中,调用WebService接口是常见的任务之一,尤其在需要与其他系统集成或使用外部服务时。本示例着重讲解如何使用.NET来调用一个特定的WebService接口,即短信发送服务。首先,我们需要理解WebService的...