首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Webservice读取网络上的天气预报

使用Webservice读取网络上的天气预报

作者头像
the5fire
发布2019-02-28 10:35:33
1.2K0
发布2019-02-28 10:35:33
举报

  Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。具体来说它可以完成异构语言的通信,就是可以通过它来让C#和Java之间进行通信。

  它包含的技术有:

1.XML:描述数据的标准方法.

  2.SOAP:表示信息交换的协议.

  3.WSDL:Web服务描述语言.

  4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。

  根据我个人的理解来说,所谓WebService就是一个中间商,Java和C#编写的程序可以通过该中间商发布信息以供其他异构语言读取。

  这个简单演示一下通过java来读取WebService上的内容。

大概步骤:

  首先是根据WebService的描述(WSDL)生成本地的存根文件;

  然后在本地调用存根文件即可。

  具体实现:

1. 建一个文件 WSDL-SQUARED.CMD ,内容如下:

set AXIS_HOME=F:\DRP\axis-1_4
set CLASSPATH=.;%AXIS_HOME%\lib\axis.jar;%AXIS_HOME%\lib\axis-ant.jar;%AXIS_HOME%\lib\commons-discovery-0.2.jar;%AXIS_HOME%\lib\commons-logging-1.0.4.jar;%AXIS_HOME%\lib\jaxrpc.jar;%AXIS_HOME%\lib\log4j-1.2.8.jar;%AXIS_HOME%\lib\saaj.jar;%AXIS_HOME%\lib\wsdl4j-1.5.1.jar

java org.apache.axis.wsdl.WSDL2Java  -p com.util.ws http://www.ayandy.com/Service.asmx?WSDL

你需要把这个我文件拷贝到你项目的src目录下,然后在资源管理其中打开,运行该文件,即可根据WebService的描述生成本地的语言代码到指定的“com.util.ws”包中。其中的AXIS_HOME的目录是需要你配置的,具体的axis-1_4包需要下载,在最后我会给出,另外你需要把这个包目录下lib中的jar包都拷贝到WEB-INF的lib下面。那个com.util.ws就是我建立的一个包。

2. 然后刷新一下工程,你会发现在com.util.ws包中多了几个类(你可以看看这几个类中的代码是怎么写的),然后写一个jsp调用一下存根类:

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@ page import="java.rmi.RemoteException" %>
<%@ page import="javax.xml.rpc.ServiceException" %>
<%@ page import="com.util.ws.*" %>
<%
	Service service = new ServiceLocator();

	ServiceSoap_PortType serviceSoap_PortType = service.getServiceSoap();

	String[] provs = serviceSoap_PortType.getSupportProvince();
	out.println("得到支持的省份:
");
	for (int i = 0; i < provs.length; i++) {
		out.println(provs[i]);
		if (i % 8 == 0 ) {
			out.println("
");
		}
	}

	out.println("得到支持的城市:
");
	String[] citys = serviceSoap_PortType.getSupportCity("河北");

	out.println("输出各个城市的天气:
");
	for (int i = 0; i < citys.length; i++) {

		String[] weathers = serviceSoap_PortType.getWeatherbyCityName(citys[i],TheDayFlagEnum.Today);
		//如果不存在该城市的天气则读取下一个
		if (weathers[2].equalsIgnoreCase("您查询的城市天气信息不存在!") || weathers[2] == null) {
			continue;
		}
		out.println(citys[i] + ":");
		for (int j = 2; j < weathers.length - 2; j++) {
			out.println(weathers[j]);
		}
		out.println("
");
		out.println("img src='" + weathers[6] + "'");
		out.println("
");
	}


 %>

  运行即可显示效果:

  关于WebService的应用还有很多,我个人也只是简单的了解,欢迎大家一起讨论。

axis-bin-1_4.zip下载:http://u.115.com/file/f46e54afa5

  Web服务集合:http://www.webxml.com.cn/zh_cn/web_services.aspx,你可以从这里获得WebService服务,就像是我这个读取天气预报,你可以读取手机归属地,可以读取股票信息,……

  相关参考:

http://dotnet.e800.com.cn/articles/2008/325/1206413620368_1.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-01-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档