首页 > 编程知识 正文

webservice通讯协议(webservice案例)

时间:2023-05-04 10:02:18 阅读:72844 作者:1747

web服务的工作原理和示例

一、web服务的基本概念

Web Service (也称为XML Web Service WebService )是一种轻量级、独立的通信技术,可以接收internet或internet上其他系统发出的请求。是SOAP在Web上提供的软件服务,使用WSDL文件进行说明并使用UDDI进行注册。

XML:(可扩展标记语言)可扩展标记语言。 短期临时数据处理,面向万维网络,是Soap的基础。

简单对象访问协议(simpleobjectaccessprotocol )。 XMLweb服务的通信协议。 用户在UDDI中找到你的WSDL描述文档后,他可以在SOAP中调用你建立的Web服务的一个或多个操作。 SOAP是XML文档格式调用方法的规范,可以支持各种底层接口,包括http(s )和SMTP。

wsdl:(webservicesdescriptionlanguage ) wsdl文件是一组说明如何交换SOAP消息的XML文档。 大多数情况下,它由软件自动生成和使用。

通用描述、发现和集成(UDDI )是主要面向Web服务提供者和用户的新项目。 在用户调用Web服务之前,必须确定该服务包含什么业务方法,找到调用的接口的定义,然后在服务端创建软件。 UDDI是一种引导系统基于描述文档查找相应服务的机制。 UDDI利用SOAP消息机制(标准XML/HTTP )发布、编辑、浏览和搜索注册信息。 以XML格式封装各种类型的数据,并将其发送到注册中心,或从注册中心返回所需的数据。

二.呼叫原理

实现完整的Web服务包括以下步骤:

Web服务提供者设计为实现Web服务,通过Web服务中介发布正确调试的Web服务,并在UDDI注册中心注册(发布)

Web服务委托人向Web服务中介委托特定服务,中介根据要求咨询UDDI注册中心,为委托人查找符合要求的服务(发现)

Web服务中介者将满足条件的Web服务描述信息返回给Web服务请求者。 该描述信息是用WSDL编写的,可以由各种Web服务兼容设备读取; (发现)

为了实现Web服务的调用,使用Web服务中介返回的描述信息生成相应的SOAP消息,发送给Web服务提供者(绑定)

Web服务提供者按照SOAP消息执行适当的Web服务,并将服务结果返回给Web服务请求者。 (绑定)

三、呼叫方式:

1 .在net上以GET/POST/SOAP方式动态调用web服务的简单灵活的方法(C# ) )。

调用web服务有三种方法

1 ).httpget

2 ).httppost

3 ).httpsoap

soap的优点是可以传输结构化数据,但不能做到前两个。

btw、soap最终也使用HTTP传输XM

web服务实例

一、使用CXF开发web服务端:

每个web服务组件都需要两个部分:接口和实现类。 步骤: 1、准备开发所需的jar软件包【apache-cxf-2.5.9下载】

2、开发使用@ web服务修饰的web服务业务接口。

package com.ywx; importJavaX.jws.web服务; @ webservicepublicinterfacehelloworld { string sayhi (string name ); }

3、要写这个方法的实现类,方法也需要用@WebService限定,在其中的参数中,如下指定要实现的接口,指定服务名。

package com.ywx.impl; import java.util.Date; importJavaX.jws.web服务; import com.ywx.HelloWorld; @ web服务(endpoint interface=' com.ywx.hello world ',serviceName='HelloWorld

Ws")//指定webservice所实现的接口以及服务名称public class HellowWorlds implements HelloWorld{@Overridepublic String sayHi(String name) {return name+"您好!现在时间是:"+new Date();}}

4、暴露Web Service的函数,运行函数暴露Web Service:
package com.ywx.lee;import javax.xml.ws.Endpoint;import com.ywx.HelloWorld;import com.ywx.impl.HellowWorlds;public class ServiceMain {public static void main(String args[]){HelloWorld hw = new HellowWorlds();//调用Endpoint的publish方法发布Web ServiceEndpoint.publish("192.168.1.7/vashon", hw);System.out.println("Web Service暴露成功!");}}
然后运行浏览器,输入:http://192.168.1.7/vashon?wsdl 查看结果,如果成功生成如下wsdl文档则表示Web Service暴露成功。


二、使用CXF开发Web Service客户端:
步骤:
1、新建一个客户端工程 2、调用CXF提供的wsdl2java工具或使用eclipse/myeclipse的new Web Service生成客户端代码(这里使用第二种方式):

                                           

输入wsdl链接:
                                             
点击next:
                                                                                                       选择生成客户端代码的位置:    


                                           


点击finish,生成客户端代码如下:

                                                                            

3、在客户端写测试类测试:
package com.ywx.test;import java.rmi.RemoteException;import com.ywx.HelloWorldProxy;public class TestService {public static void main(String args[]){HelloWorldProxy h = new HelloWorldProxy();try {String s = h.sayHi("明理的曲奇");System.out.println("调webservice:"+s);} catch (RemoteException e) {e.printStackTrace();}}}
运行结果(传入一个参数,调用Web Service返回的字符串结果如下):


其调用生成的格式已经有服务端定义好了,看上面贴出来的代码或者下面的截图说明:


Web Service服务端和客户端工程结果截图如下:
                   

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。