WebService, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据WebService规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据,通俗的讲,WebService就是一个向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService 的应用程序叫做客户端,发布这个web服务的机应用程序器称为WebService服务器
webservice有着许多优势:
1)异构平台的互通性
理论上, WebService 最大的优势是提供了异构平台的无缝街接技术手段。由于不同的用户使用不同的硬件平台,不同的操作平台,不同的操作系统,不同的软件,不同的协议通信,这就产生了互相通信的需求。 Web Service 使任何两个应用程序,只要能读写XML,那么就能互相通信。
2)更广泛的软件复用
软件的复用技术通过组合已有模块来搭建应用程序,能大幅度提高软件的生产效率和质量。用户只要获得了描述 WebService 的 WSDL 文件,就可以方便地生成客户端代理,并通过代理访问 WebService 。
3)成本低、可读性强、应用范围广
WebService 可用基于 XML 的 SOAP 来表示数据和调用请求。并且通过 HTTP 协议传输 XML 格式的数据
4)迅捷的软件发行方式
WebService 将彻底地改变软件的发行方式。软件供应商可以把软件分解成若WebService 模块构成的系统,直接在 Web 上发布
webservice常用的专业术语:
1)XML: Extensible Markup Language -扩展性标记语言XML,用于传输格式化的数据,是Web服务的基础。
• namespace-命名空间。
• xmlns=“http://asen.cn” 使用默认命名空间。
• xmlns:itcast=“http://asen.cn”使用指定名称的命名空间。
2)WSDL: WebService Description Language – Web服务描述语言。调用该webservice api 的接口描述
•通过XML形式说明服务在什么地方-地址。
•通过XML形式说明服务提供什么样的方法 – 如何调用。
3)SOAP: Simple Object Access Protocol(简单对象访问协议)
•SOAP作为一个基于XML语言的协议用于有网上传输数据。
•SOAP = 在HTTP的基础上+XML数据。
•SOAP是基于HTTP的。
•SOAP的组成如下:
1. Envelope – 必须的部分。以XML的根元素出现。
2. Headers – 可选的。
3. Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。
webservice服务调用方式一:
通过get调用
public static void get(String mobileCode, String userID){ URL url = null; try { url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?" + "mobileCode=" + mobileCode + "&userID=" + userID); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); if(connection.getResponseCode() == HttpURLConnection.HTTP_OK){ InputStream is = connection.getInputStream(); ByteArrayOutputStream boas=new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int len=-1; while((len=is.read(buffer))!=-1){ boas.write(buffer, 0, len); } System.out.println("GET请求获取的数据:"+boas.toString()); boas.close(); is.close(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }通过post调用
public static void post(String mobileCode, String userID){ HttpClient client = new HttpClient(); PostMethod method = new PostMethod("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo"); method.setParameter("mobileCode", mobileCode); method.setParameter("userID", userID); try { int code = client.executeMethod(method); String result=method.getResponseBodyAsString(); System.out.println("Post请求的结果:"+result); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }通过SOAP1.1方式
public static void postSoap1() throws Exception { // 创建一个post请求,类似Post请求 PostMethod postMethod = new PostMethod("http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx"); // 设置传送信息的格式 postMethod.setRequestHeader("Content-Type","text/xml; charset=utf-8"); postMethod.setRequestBody(new FileInputStream("C:/a.txt")); int code = http.executeMethod(postMethod); System.out.println("消息码为:" + code); System.out.println("返回的消息为:" + postMethod.getResponseBodyAsString()); postMethod.releaseConnection(); }webservice服务调用方式二:
通过java方式访问
这种方式首先要获取wsdl文件.使用JDK1.6以上的版本的wsimport命令,相关命令有
wsimport -encoding utf-8 -s ./ C:\Users\Asen\Desktop\WeatherWS.asmx.xml |
wsimport -encoding utf-8 -s ./ http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL |
可以把class文件打成jar包 jar cvf test.jar 打包目录,拷贝到项目中调参考WSDL用即可调用源码如下:
public static void main(String[] args) { MobileCodeWS mobileCodeWs=new MobileCodeWS(); MobileCodeWSSoap mobileCodeWSSoap=mobileCodeWs.getMobileCodeWSSoap(); String tel=mobileCodeWSSoap.getMobileCodeInfo("18373551982",null); System.out.println(tel); }
我们也可以自己创建一个webservice服务
步骤一:创建一个web服务
/** * 声明:@webservice * 发布:EndPoint * @author Asen * */ @WebService(serviceName="PhoneManager"//修改服务名 , targetNamespace="http://aa.ws.com.asen")//修改命名空间 public class PhoneService { /* * @WebParam注解修改参数名 * @WebResult修改返回参数名字 */ @WebMethod(operationName="getMobileInfo")//修改方法名 public @WebResult(name="phone")Phone getPhoneInfo(@WebParam(name="osName")String osName){ Phone phone = new Phone(); if(osName.endsWith("android")){ phone.setName("android"); phone.setOwner("google"); phone.setTotal(80); }else if (osName.endsWith("ios")) { phone.setName("ios"); phone.setOwner("apple"); phone.setTotal(15); }else { phone.setName("windows phone"); phone.setOwner("microsoft"); phone.setTotal(15); } return phone; } @WebMethod(exclude=true)//将该方法排除在外 public void sayHello(String city){ System.out.println(city); } }步骤二:
/* * 发布webservice */ public static void main(String[] args) { String address1="http://localhost:8888/ws/phoneService"; String address2="http://localhost:8888/ws/phoneManager"; Endpoint.publish(address1, new PhoneService()); Endpoint.publish(address2, new PhoneService()); System.out.println("wsld地址:" + address1 + "?WSDL"); }接下来调用即可,对于webservice,Apache开发了一个开源的框架CXF,CXF 帮助您来构建和开发 Services 这些 Services 可以支持多种协议,比如:SOAP、POST/HTTP、RESTful HTTP CXF 大大简化了 Service可以天然地和 Spring 进行无缝集成。CXF有两种发布方式,方式一利用ServerFactoryBean来发布web服务,方式二利用JaxWsServerFactoryBean来发布web服务
public static void main(String[] args) { LanguageService languageService=new LanguageServiceImpl(); ServerFactoryBean bean=new ServerFactoryBean(); //Endpoint :地址 , 实现对象 bean.setAddress("http://192.168.114.10:9999/ws/cxf/languangeService"); bean.setServiceClass(LanguageService.class);//对外提供webservcie的业务类或者接口 bean.setServiceBean(languageService);//服务的实现bean bean.create();//创建,发布webservice System.out.println("wsdl地址:http://192.168.114.10:9999/ws/cxf/languangeService?WSDL"); }
public static void main(String[] args) { LanguageService languageService=new LanguageServiceImpl(); JaxWsServerFactoryBean bean=new JaxWsServerFactoryBean(); //Endpoint :地址 , 实现对象 bean.setAddress("http://192.168.114.10:9999/ws/cxf/languangeService"); bean.setServiceClass(LanguageService.class);//对外提供webservcie的业务类或者接口 bean.setServiceBean(languageService);//服务的实现bean //添加输入拦截器 :输入显示日志信息的拦截器 bean.getInInterceptors().add(new LoggingInInterceptor()); //添加输出拦截器 :输出显示日志信息的拦截器 bean.getOutInterceptors().add(new LoggingOutInterceptor()); bean.create();//创建,发布webservice System.out.println("wsdl地址:http://192.168.114.10:9999/ws/cxf/languangeService?WSDL"); }我们需要注意的是利用ServerFactoryBean来发布web服务没有添加webService注解,也就是说没有注解也可以发布webService服务,但是这种方式不是很规范,比如我们不可以通过注解的方式来修改WSDL的标签信息,JaxWsServerFactoryBean是ServerFactoryBean的子类,也是功能扩展类。此类,必须要在被发布为服务的类上添加@WebService注解,如果不加注解,虽然不出错,但也不会对外暴露任何方法。使用此类生成的wsdl文件更加规范,更重要的是可以通过添加拦截器拦截请求。
相关推荐
【WebService基本理论知识】 Web Services是一种基于互联网的、允许不同系统之间进行交互和协作的应用程序组件。它们通过开放协议如HTTP(超文本传输协议)进行通信,并利用XML(可扩展标记语言)作为数据交换的...
### Webservice基本教程知识点概述 #### 一、Webservice简介 Webservice是一种跨语言、跨平台的应用程序间通信协议标准,它允许不同平台上的应用程序通过网络进行数据交换和功能调用。Webservice主要依赖于XML(可...
除了基本的功能外,Eclipse WebService Explorer还提供了更多高级特性,帮助开发者深入理解和服务交互: 1. **SOAP消息查看器**:可以查看完整的SOAP请求和响应消息,便于调试和分析。 2. **安全支持**:支持对服务...
【Android开发之WebService介绍】 在Android开发中,与远程服务器进行数据交互是常见的需求,而WebService就是实现这种交互的一种方式。WebService是一种基于网络的、分布式的模块化组件,旨在促进不同系统之间的互...
本篇将详细介绍Web服务的基本概念、工作原理,以及提供一个实现样例,帮助理解Web服务的实践应用。 一、Web服务基本概念 1. **SOAP(Simple Object Access Protocol)**:Web服务主要使用的通信协议,它基于XML,...
通过WebService,可以在不同的应用程序之间共享业务逻辑、数据和功能,这有助于提高软件的可重用性和互操作性。 #### 二、WebService的基本组成部分 WebService主要包括以下几个部分: 1. **服务提供者**:提供...
10. **性能测试**:对于性能测试,WebserviceStudio或许能进行简单的负载测试,模拟多个并发请求,评估服务的性能和稳定性。 11. **安全性测试**:对于安全性的考虑,工具可能提供对HTTPS和WS-Security的支持,帮助...
学习使用WebserviceStudio需要对Web服务的基本概念和技术有一定了解,如XML、WSDL、SOAP等。深入掌握这些知识,将有助于更高效地利用WebserviceStudio进行Web服务的调试和测试。 总之,WebserviceStudio是一款实用...
4. **性能测试**:除了基本的功能测试,工具还能进行简单的性能测试,如并发请求、请求频率等,评估Web服务在高负载下的表现。 5. **日志记录**:测试过程中的所有请求和响应都会被记录下来,便于后期分析和问题...
1. **WebService基本概念**:WebService是一种基于开放标准(如XML、WSDL和SOAP)的Web应用程序,允许不同系统之间的数据交换。它通过HTTP协议进行通信,使得分布式计算变得简单且可互操作。 2. **数据压缩**:在...
9. **性能优化**: 对于大规模应用,考虑缓存策略、负载均衡和消息压缩等手段来提升WebService的性能。 10. **监控与调试**: 使用工具如Fiddler或Visual Studio自带的Web调试器可以帮助开发者查看和调试WebService...
- **服务消费者**:调用 WebService 接口并使用服务功能的一方。 - **服务描述**:通常使用 WSDL (Web Services Description Language) 来描述 WebService 的接口,包括可用的方法、参数类型等信息。 - **服务发布**...
本教程将详细介绍如何在Idea中实现一个简单的WebService实例。 【描述】:通过Idea实现webservice涉及到的主要步骤包括设置项目、创建服务接口、编写服务实现、部署和测试。下面我们将逐一解析这些步骤: 1. **...
除了基本的测试步骤外,为了更全面地验证SAP Webservice的功能,还可以采用以下几种高级测试技巧: - **断言测试**:利用SOAPUI提供的断言功能,对返回的数据进行验证,确保数据的准确性和完整性。 - **性能测试**...
首先,我们需要理解WebService的基本概念。WebService是一种基于XML(Extensible Markup Language)的通信协议,它利用SOAP(Simple Object Access Protocol)进行消息传输,通过WSDL(Web Services Description ...
这个工具可能包含了各种功能,如模拟调用Web Service接口,查看和编辑请求/响应数据,验证返回结果,性能测试,以及可能的日志记录和错误调试功能。 总的来说,C# WebService调用测试工具是一个强大的开发辅助工具...
在实际工作中,开发人员可以利用WebServiceStudio快速验证WebService接口的功能,排查错误,提高开发效率。同时,由于其跨平台的特性,无论你是在Windows、Linux还是Mac上,只要安装了该工具,都可以进行测试。 ...
首先,我们需要理解WebService的基本架构。一个完整的WebService通常包含以下几个关键部分: 1. WSDL(Web Service Description Language):这是WebService的接口定义语言,用于描述服务提供的操作、输入和输出...
1. WebService基本概念 WebService是一种基于XML(可扩展标记语言)的轻量级通信技术,它允许不同系统之间通过SOAP(简单对象存取协议)进行交互。WSDL(Web Services Description Language)用于描述WebService的...