实际开发中可能会调用各种web service,常用的web service可以在这个网站上查找到:http://www.webxml.com.cn/zh_cn/index.aspx
,下面通过axis2的方式编写访问天气预报服务的代码:
编写客户端代码时需要参看几个量,如地址,请求结构等,这些信息可以参看服务的WSDL和示例:
有了这些信息就可以编写代码调用天气预报服务了,注意需要axis2的jar包支持:
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.rpc.client.RPCServiceClient;
/**
* 调用天气预报
*/
public class Weather {
public static void main(String[] args) {
Weather client = new Weather();
client.testDocument();
}
public void testDocument() {
try {
ServiceClient sc = new ServiceClient();
Options opts = new Options();
// 确定目标服务地址
// location
opts.setTo(new EndpointReference(
"http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx"));
// 确定调用方法
// 对应soapAction
opts.setAction("http://WebXml.com.cn/getWeather");
opts.setSoapVersionURI(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
sc.setOptions(opts);
// 发送请求并并得到返回结果,注意参数生成方法的分析
OMElement res = sc.sendReceive(createPayLoad());
// 值得注意的是,返回结果就是一段由OMElement对象封装的xml字符串。
res.getFirstElement().getText();
System.out.println(res);
} catch (AxisFault e) {
e.printStackTrace();
}
}
public static OMElement createPayLoad() {
OMFactory fac = OMAbstractFactory.getOMFactory();
// 指定命名空间
OMNamespace omNs = fac
.createOMNamespace("http://WebXml.com.cn/", "nsl");
// 指定方法
OMElement method = fac.createOMElement("getWeather", omNs);
OMElement p1 = fac.createOMElement("theCityCode", omNs);
OMElement p2 = fac.createOMElement("userID", omNs);
method.addChild(p1);
method.addChild(p2);
p1.setText("南京");
// 返回方法(实际上就是OMElement封装的xml字符串)
return method;
}
}
程序运行结果如下:
log4j:WARN No appenders could be found for logger (org.apache.axis2.context.AbstractContext).
log4j:WARN Please initialize the log4j system properly.
<getWeatherResponse xmlns="http://WebXml.com.cn/"><getWeatherResult><string>江苏 南京
</string><string>南京
</string><string>1944</string><string>2012/01/14 21:21:12
</string><string>今日天气实况:气温:3℃;风向/风力:东风 2级;湿度:90%</string><string>空气质量:良;紫外线强度:最弱</string><string>穿衣指数:天气冷,建议着棉衣、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣或冬大衣。
感冒指数:天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。
运动指数:有降水,风力较强,较适宜在户内开展各种健身和休闲运动,若坚持户外运动,请注意保暖。
洗车指数:不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。
晾晒指数:有降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。
旅游指数:天气稍凉,风稍大会加大些凉意,且预报有小雨,旅游指数一般,外出旅游请注意防风保暖并携带雨具。
路况指数:有降水,路面潮湿,车辆易打滑,请小心驾驶。
舒适度指数:有降水,人们会感到有些凉意,不过大部分人仍会有比较舒适的感觉。
空气污染指数:气象条件有利于空气污染物稀释、扩散和清除,可在室外正常活动。
紫外线指数:属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。</string><string>1月15日 小雨转阴</string><string>2℃/6℃</string><string>东风3-4级</string><string>7.gif</string><string>2.gif</string><string>1月16日 多云</string><string>1℃/8℃</string><string>东南风3-4级</string><string>1.gif</string><string>1.gif</string><string>1月17日 多云转小雨</string><string>3℃/8℃</string><string>东南风3-4级</string><string>1.gif</string><string>7.gif</string><string>1月18日 小雨</string><string>3℃/6℃</string><string>东风4-5级</string><string>7.gif</string><string>7.gif</string><string>1月19日 小雨</string><string>3℃/7℃</string><string>东风4-5级转东北风4-5级</string><string>7.gif</string><string>7.gif</string></getWeatherResult></getWeatherResponse>
最后提醒
下大家,不要在一天内多次访问该服务,它是有访问次数限制的,而且有的服务并不是free of charge!
- 大小: 11.5 KB
- 大小: 4.9 KB
分享到:
相关推荐
这里我们关注的是“调用天气预报Web Service”使用Axis1.4,这是一个较老但仍然广泛使用的Java Web Service框架。下面将详细阐述相关知识点。 1. **Web Service**:Web Service是一种通过HTTP协议进行通信的服务,...
编译并运行上述Java代码,你将得到Web Service返回的结果,例如北京的天气预报。 **注意事项** 1. 确保网络连接畅通,以便获取WSDL文件和调用Web Service。 2. Web Service的调用可能需要处理异常,如网络错误、...
### 使用Axis调用在线天气预报服务的实现方法 #### 一、概述 本文将详细介绍如何在Java环境中利用Apache Axis框架来调用一个在线天气预报服务。这个示例演示了如何在MyEclipse环境下配置和使用Axis 2进行网络服务...
简单的Web服务可以提供诸如天气预报或航班信息等实用功能。一旦部署,其他应用就可以发现并调用这些服务,实现跨平台的数据交换。 2. AXIS项目详解 AXIS的核心架构由多个子系统组成: - **消息流子系统**:处理程序...
标题中的“使用eclipse调用天气预报的测试代码WSDL”揭示了这是一个关于在Eclipse集成开发环境中,通过Web服务描述语言(WSDL)来访问天气预报API的教程。WSDL是一种XML格式,用于定义网络服务,特别是SOAP(简单...
- **启动与测试**:使用命令行或通过集成开发环境(IDE)启动Axis2服务器,并通过访问默认的管理界面验证是否安装成功。 #### 四、创建第一个WebService - **编写服务代码**:使用Java编写WebService类,该类通常...
例如,电商平台可以使用Web服务与其他系统交换库存和订单信息,或者小程序可以调用天气预报服务获取实时天气数据。 8. **开发工具与框架**:许多开发工具和框架如Apache Axis、Java JAX-WS、.NET WCF等,简化了Web...
- **案例2:天气预报服务**:开发一个天气预报Web服务,通过调用外部API获取天气数据,并以SOAP消息的形式返回给客户端。 #### 六、总结 WebService作为一种重要的企业级通信方式,在现代软件开发中扮演着不可或缺...
#### 一、最简单的发布AXIS的Web Service **知识点概述:** 本节主要介绍如何使用Axis快速发布Web服务。通过简单的步骤和示例,帮助开发者理解发布Web服务的基本流程。 **知识点详述:** 1. **Web服务简介** - ...
这通常涉及创建一个Java类或函数,然后使用特定的工具(如Apache CXF、 Axis2等)将这个类或函数包装成一个可访问的Web Service。服务端会监听指定的HTTP端口,等待客户端的SOAP请求,并按照WSDL中定义的规则处理...
与传统的Web应用程序不同,Web Service不直接面向用户,而是提供一组可调用的API(应用程序接口),使得其他应用程序能够通过SOAP(Simple Object Access Protocol)协议来访问和使用服务。SOAP是一种XML格式的协议...
例如,银行可以通过Web服务提供在线转账服务,电子商务网站可以使用Web服务获取物流信息,或者天气应用获取实时天气预报。 9. **开发和测试工具**:开发Web服务通常涉及使用如Apache Axis、Java JAX-WS或.NET WCF等...
Webservice是一种基于XML的网络应用接口,它使用SOAP(简单对象访问协议)进行数据传输,并通过WSDL(Web服务描述语言)定义服务接口,使用UDDI(统一描述、发现和集成)来查找和注册服务。 2. **WebService的技术...
XML文档可以包含结构化数据,如商业交易、库存信息或天气预报,这使得不同系统间的数据交换变得简单。 WSDL是Web服务的接口定义,它使用XML来描述一个服务的接口,包括服务的位置、提供的操作以及如何调用这些操作...
- 使用Axis2工具生成服务的WSDL文件。 - **生成server端的.java文件**: - 编写服务端代码,并将其打包部署到Tomcat服务器。 ##### 3.2 客户端设计与实现 - **搭建项目架构**: - 创建项目,设置项目依赖。 -...