`
bcworld
  • 浏览: 39537 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用axis2的方式访问天气预报的web service

阅读更多

实际开发中可能会调用各种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
2
0
分享到:
评论

相关推荐

    调用天气预报webservice

    这里我们关注的是“调用天气预报Web Service”使用Axis1.4,这是一个较老但仍然广泛使用的Java Web Service框架。下面将详细阐述相关知识点。 1. **Web Service**:Web Service是一种通过HTTP协议进行通信的服务,...

    基于Axis的Web Service客户端调用

    编译并运行上述Java代码,你将得到Web Service返回的结果,例如北京的天气预报。 **注意事项** 1. 确保网络连接畅通,以便获取WSDL文件和调用Web Service。 2. Web Service的调用可能需要处理异常,如网络错误、...

    通过axis使用网上天气预报服务的demo

    ### 使用Axis调用在线天气预报服务的实现方法 #### 一、概述 本文将详细介绍如何在Java环境中利用Apache Axis框架来调用一个在线天气预报服务。这个示例演示了如何在MyEclipse环境下配置和使用Axis 2进行网络服务...

    Axis开发Web Service程序教程

    简单的Web服务可以提供诸如天气预报或航班信息等实用功能。一旦部署,其他应用就可以发现并调用这些服务,实现跨平台的数据交换。 2. AXIS项目详解 AXIS的核心架构由多个子系统组成: - **消息流子系统**:处理程序...

    使用eclipse调用天气预报的测试代码WSDL

    标题中的“使用eclipse调用天气预报的测试代码WSDL”揭示了这是一个关于在Eclipse集成开发环境中,通过Web服务描述语言(WSDL)来访问天气预报API的教程。WSDL是一种XML格式,用于定义网络服务,特别是SOAP(简单...

    Quickstart.Apache.Axis2

    - **启动与测试**:使用命令行或通过集成开发环境(IDE)启动Axis2服务器,并通过访问默认的管理界面验证是否安装成功。 #### 四、创建第一个WebService - **编写服务代码**:使用Java编写WebService类,该类通常...

    web service 小程序

    例如,电商平台可以使用Web服务与其他系统交换库存和订单信息,或者小程序可以调用天气预报服务获取实时天气数据。 8. **开发工具与框架**:许多开发工具和框架如Apache Axis、Java JAX-WS、.NET WCF等,简化了Web...

    web+Service开发

    - **案例2:天气预报服务**:开发一个天气预报Web服务,通过调用外部API获取天气数据,并以SOAP消息的形式返回给客户端。 #### 六、总结 WebService作为一种重要的企业级通信方式,在现代软件开发中扮演着不可或缺...

    Axis高级编程

    #### 一、最简单的发布AXIS的Web Service **知识点概述:** 本节主要介绍如何使用Axis快速发布Web服务。通过简单的步骤和示例,帮助开发者理解发布Web服务的基本流程。 **知识点详述:** 1. **Web服务简介** - ...

    webservice学习资料下载

    这通常涉及创建一个Java类或函数,然后使用特定的工具(如Apache CXF、 Axis2等)将这个类或函数包装成一个可访问的Web Service。服务端会监听指定的HTTP端口,等待客户端的SOAP请求,并按照WSDL中定义的规则处理...

    webService总结1

    与传统的Web应用程序不同,Web Service不直接面向用户,而是提供一组可调用的API(应用程序接口),使得其他应用程序能够通过SOAP(Simple Object Access Protocol)协议来访问和使用服务。SOAP是一种XML格式的协议...

    Web Services Explained Solutions and Applications for the Real World.

    例如,银行可以通过Web服务提供在线转账服务,电子商务网站可以使用Web服务获取物流信息,或者天气应用获取实时天气预报。 9. **开发和测试工具**:开发Web服务通常涉及使用如Apache Axis、Java JAX-WS或.NET WCF等...

    基于Webservice的信息查询系统.pdf

    Webservice是一种基于XML的网络应用接口,它使用SOAP(简单对象访问协议)进行数据传输,并通过WSDL(Web服务描述语言)定义服务接口,使用UDDI(统一描述、发现和集成)来查找和注册服务。 2. **WebService的技术...

    Web服务:Web服务工具的​​集合

    XML文档可以包含结构化数据,如商业交易、库存信息或天气预报,这使得不同系统间的数据交换变得简单。 WSDL是Web服务的接口定义,它使用XML来描述一个服务的接口,包括服务的位置、提供的操作以及如何调用这些操作...

    基于Webservice的信息查询系统.docx

    - 使用Axis2工具生成服务的WSDL文件。 - **生成server端的.java文件**: - 编写服务端代码,并将其打包部署到Tomcat服务器。 ##### 3.2 客户端设计与实现 - **搭建项目架构**: - 创建项目,设置项目依赖。 -...

Global site tag (gtag.js) - Google Analytics