WebService教程详解(一)

Web Services 可以将应用程序转换为网络应用程序。

通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能。

Web Services 可以被其他应用程序使用。

通过 Web Services,您的会计部门的 Win 2k 服务器可以与 IT 供应商的 UNIX 服务器相连接。

基本的 Web Services 平台是 XML+HTTP。

Web services 使用 XML 来编解码数据,并使用 SOAP 来传输数据。

什么是webService

WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用.

1:从WebService的工作模式上理解的话,它跟普通的Web程序(比如ASP、JSP等)并没有本质的区别,都是基于HTTP传输协议的程序。

2:WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。SOAP协议实际上就是一种基于XML编码规范的文本协议。

webService的技术支持

Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议有:

XML和XSD

  可扩展的标记语言XML 是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XML SchemaXSD 定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。

  Web Service平台是用XSD来作为数据类型系统的。当你用某种语言如VB. NET或C# 来构造一个Web Service时,为了符合Web Service标准,所有你使用的数据类型都必须被转换为XSD类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP。

SOAP

  SOAP即简单对象访问协议(Simple Object Access Protocal),它是用于交换XML编码信息的轻量级协议。它有三个主要方面:XML-envelope为描述信息内容和如何处理内容定义了框架,将程序对象编码成为XML对象的规则,执行远程过程调用(RPC)的约定。SOAP可以运行在任何其他传输协议上。例如,你可以使用 SMTP,即因特网电子邮件协议来传递SOAP消息,这可是很有诱惑力的。在传输层之间的头是不同的,但XML有效负载保持相同。

  Web Service 希望实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现“基于Web无缝集成”的目标。

WSDL

  Web Service描述语言WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。

UDDI

  UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。 调用RPC与消息传递

  Web Service本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法:RPC远程过程调用 和消息传递。使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。

如何发布一个WebService?

1、用Jdk1.6.0_21以后的版本发布一个WebService服务.并通过地址栏查看它的wsdl文档.

2、通过wsimport生成客户端代码,调用并查看运行的结果.(学会如何调用是我们的重点).

需要注意的是,jdk1.6._07以后jdk版本发布WebService时必须要完整的对代码进行注解,如果使用的是jdk1.6.0_21以后版本,因为它已经内含了ws2.1所以,可以只对类添加@WebService的注解.

以下是两段不同的代码:

在jdk1.6.0_13的版本上发布的ws:

package com.itcast;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import javax.xml.ws.Endpoint;
@WebService(targetNamespace="http://loalhost:9999/helloworld")
@SOAPBinding(style=Style.RPC)//只支持RPC的消息风格
public class HelloWorld {
//以下通过@WebMethod注解,对外公开方法
@WebMethod
public String sayHello(){
return "HelloWorld";
}
public static void main(String[] args) {
Endpoint.publish("http://localhost:9999/helloworld",new HelloWorld());
}
} 

2:以下是在jdk1.6.0_24上发布的WebService代码:

package com.itcast;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService//注意只有此一个注解,此注解也是必须的,默认的SOAP消息风格为:DOCUMENT
public class HelloWorld {
public String sayHello(){
return "HelloWorld";
}
public static void main(String[] args) {
Endpoint.publish("http://localhost:9999/helloworld",new HelloWorld());
}
}

第一个WebService服务

package com.itcast;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
/**
* 第一个WebService服务应用
*/
//通过注解,标明此类发布为一个WebService
@WebService
public class HelloWorld {
public String sayHello(){
return "Hello World";
}
//在main方法中,使用javax.xml.ws.Endpoint端点发布一个应用
public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:9999/helloworld",
new HelloWorld());
}
}

代码说明:HelloWorld类的所有非静态公开方法将对外部暴露.

Wsimport工具说明:

 wsimport是jdk自带的,可以根据wsdl文档生成客户端调用代码的工具.当然,无论服务器端的WebService是用什么语言写的,都将在客户端生成Java代码.服务器端用什么写的并不重要.

 wsimport.exe位于JAVA_HOME\bin目录下.

常用参数为:

• -d<目录> - 将生成.class文件。默认参数。

• -s<目录> - 将生成.java文件。

• -p<生成的新包名> -将生成的类,放于指定的包下。

(wsdlurl) - http://server:port/service?wsdl,必须的参数

使用:

1:可以通过java –version检查你当前的版本号.如果版本太低可以安装高版本的jdk.

或直接将别人已安装好的jdk目录拷贝到你的机器如D:\jdk1.6.0_24目录下.

因为以前的环境变量已经设置成以前老版本的jdk目录,即JAVA_HOME和PATH两个环境变量.

可以再重新设置一下环境变量为:JAVA_HOME=D:\jdk1.6.0_24,path=%JAVA_HOME%\bin,

重新设置了环境变量后,要重新打开一个doc(命令行)窗口.才生效.

如果不想修改原来已经配置好的环境变量,可以命令行窗口输入以下命令,使jdk1.6.0_24生效:

set path = D:\jdk1.6.0_24\bin;%PATH%(回车即可)

再通过java –version查看jdk的版本号是否已经发生变化.

2:转到一个相对干净的目录下,我在d盘上新建立一个目录名为:ws,并转到此目录下.

3:开启你的webService.

4:输入以下命令:

wsimport –s . http://127.0.0.1:9999/helloworld?wsdl

参数说明:-s是指编译出源代码文件,后面的.(点)指將代碼放到當前目錄下.

最后面的http….是指获取wsdl说明书的地址.

5:此时,将生成.java文件和.class文件.(都包含原始包名).将代码Copy到你的项目中.(只拷贝java文件)

6:在新的项目中,新一个类,(可位于任意包下),对上面生成的代码进行调用,见下一页ppt.

7:wsimport其他参数说明,我们经常使用的参数为-d,-s,-p

-d<目录>将会生成.class文件.

示例:wsimport –d . http://127.0.0.1:9999/helloworld?wsdl

-s<目录>将会生成.java文件.

示例:wsimport –s . http://127.0.0.1:9999/helloworld?wsdl

-p<包名>将生成的文件(.java或是.class修改成指定的包名)

示例:wsimport -s . -p com.beijing.itcast http://127.0.0.1:9999/helloworld?wsdl

对于-p参数,注意包名的修改,它将所生成类,全部置于通过-p指定的包下.(演示)

需要说明的是,当仅使用-p参数时,它也将同时使用-d即编译成.class文件. –d参数写或不写,它都在那里,不离不弃.

RunMain.java的源代码如下:

package com.leaf;
import com.itcast.HelloWorld;
import com.itcast.HelloWorldService;
/**
* 通过调用生成的类,来调用远程代码
*/
public class RunMain {
public static void main(String[] args) {
//从HelloWorldSerice的getHelloWorldPort方法中返回调用接口
HelloWorld helloWorld =
new HelloWorldService().getHelloWorldPort();
String str = helloWorld.sayHello(); //执行调用
System.err.println(str);//返回HelloWorld字符串
}
} 

WebService与普通Web程序的区别

1、 WebService只采用HTTP POST方式传输数据,不使用GET方式;

1) Tttp post的contentType为

(1)application/x-www-form-urlencoded

2) WebService的contentType为

(2) Text/xml soap1.1
(3) application/soap+xml –soap1.2

2、WebService从数据传输格式上作了限定。

WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。SOAP协议实际上就是一种基于XML编码规范的文本协议。

WebService和web服务器的区别:

我们可以把WebService看作是Web服务器上应用;反过来说,Web服务器是WebService运行时所必需的容器。这就是它们的区别和联系。

WebService的特点:

1、 WebService通过HTTP POST方式接受客户的请求

2、 WebService与客户端之间一般使用SOAP协议传输XML数据.

3、它本身就是为了跨平台或跨语言而设计的。

(0)

相关推荐

  • php如何调用webservice应用介绍

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册. XML:(Extensible Markup Language)扩展型可标记语言.面向短期的临时数据处理.面向万维网络,是Soap的基础. Soap:(Simple Object A

  • c#动态调用Webservice的两种方法实例

    方法一: 复制代码 代码如下: Hashtable ht = new Hashtable();            ht.Add("a", "testhelloworld");            XmlDocument xx = WebServicesHelper.QuerySoapWebService("http://www.jb51.net/elab_mgmt/WorkflowSchemeTaskSerivce.asmx", "

  • 利用soaplib搭建webservice详细步骤和实例代码

    最近在搞基于python的webservice项目,今天为把环境给配好,折腾了不少时间,还是把配的过程记录下来,以后备用:首先你系统上要有python,这个不必说啦,我系统上用的是2.7+其次,要用python进行webservice开发,还需要一些库:lxml :命令行下 sudo easy_install lxml 就能安装 pytz : 命令行下 sudo easy_install pytz 就能安装 soaplib:进行webservice开发必须要用的库,可以在https://gith

  • PHP中如何调用webservice的实例参考

    下面用一个例子说明:web service服务是查询QQ用户是否在线 使用php5开发客户端: 复制代码 代码如下: <?phptry {    //$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));    $client = new SoapClient("http://webservice.webxml.com.cn/webservices/qqOnlineWebS

  • jQuery调用WebService的实现代码

    一个例子说尽: 1..aspx中: 复制代码 代码如下: <div class="button" id="btn1"><a href="#">HelloWorld</div> <div class="button" id="btn2"><a href="#">传入参数</a></div> <div

  • 深入.net调用webservice的总结分析

    最近做一个项目,由于是在别人框架里开发app,导致了很多限制,其中一个就是不能直接引用webservice .我们都知道,调用webserivice 最简单的方法就是在 "引用"  那里点击右键,然后选择"引用web服务",再输入服务地址.确定后,会生成一个app.config 里面就会自动生成了一些配置信息.现在正在做的这个项目就不能这么干.后来经过一番搜索,就找出另外几种动态调用webservice 的方法.废话少说,下面是webservice 代码 复制代码

  • PHP使用SOAP调用.net的WebService数据

    这个与一般的PHP POST或GET传值再查库拿数据的思路有点不一样,需要用到SOAP模块,处理方法也很简单,就是有一些需要注意的事情.首先确认你的PHP.ini开启了.SOAP,就是 extension=php_soap.dll 这前面的分号去咯.代码很简单: 复制代码 代码如下: <?php$client = new SoapClient('http://www.aa.net/SearchService.asmx?WSDL');//这个SOAP地址要换成你自己的$client->soap_

  • C#发送HttpPost请求来调用WebService的方法

    复制代码 代码如下: void UpdateContactSign()        {           string ServerPage ="http://localhost/WebService/MyService.asmx";            try            {                //ServerPage += "?op=TangramAction";                ServerPage += "

  • 解析利用wsdl.exe生成webservice代理类的详解

    利用wsdl.exe生成webservice代理类:根据提供的wsdl生成webservice代理类1.开始->程序->Visual Studio 2005 命令提示2.输入如下红色标记部分D:/Program Files/Microsoft Visual Studio 8/VC>wsdl /language:c# /n:TestDemo /out:d:/Temp/TestService.cs D:/Temp/TestService.wsdl在d:/Temp下就会产生一个TestServ

  • WebService教程详解(二)

    在上篇文章给大家介绍了WebService教程详解(一) 使用工具的原因: 1. 使用工具可以更好的了解WebService请求的过程 2. 使用工具WsExplore可以获取SOAP数据发送和接收的格式 3. 使用工具Tcp/Ip Monitor可以监控拦截器请求头和响应头的具体数据 什么是SOAP? SOAP是一种基于XML编码规范的文本协议,简单的说SOAP就是在HTTP的基础上传输XML数据,以实现远程调用[无论你的服务端是什么语言书写的,只要接收SOAP协议的XML数据,并返回SOAP

  • WebService教程详解(一)

    Web Services 可以将应用程序转换为网络应用程序. 通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能. Web Services 可以被其他应用程序使用. 通过 Web Services,您的会计部门的 Win 2k 服务器可以与 IT 供应商的 UNIX 服务器相连接. 基本的 Web Services 平台是 XML+HTTP. Web services 使用 XML 来编解码数据,并使用 SOAP 来传输数据. 什么是webService We

  • Linux下.tar.xz文件的解压教程详解

    前言 对于xz这个压缩相信很多人陌生,但xz是绝大数linux默认就带的一个压缩工具,xz格式比7z还要小. 最近在下载某个源码包的时候遇到的这种压缩格式,乘此机会分享一下xz的压缩与解压方法. 安装 如果系统没有xz命令,需要进行安装,安装方法非常简单, 在centos下,直接运行: yum install xz 也可以使用源码包安装: 先下载该工具源码包http://tukaani.org/xz/ 下载后解压进入该目录运行configure生成makefile文件用-prefix指定安装目录

  • ABP(现代ASP.NET样板开发框架)系列之二、ABP入门教程详解

    ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate ABP 的由来 "DRY--避免重复

  • 使用 Docker 搭建 Laravel 本地环境的教程详解

    Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 Vagrant Box,也就是一个虚拟机,但是跟 docker 比,它占用体积太大,启动速度慢,同时响应速度很慢,现在有了 docker 这种更好的方式,可以轻松方便的搭建整套 PHP 开发环境. 本文就介绍如何使用 docker 搭建 Laravel 本地环境. 安装 docker 首先安装 docker. 克隆 laradock laradock 官方文档: http://

  • windows server2016安装MySQL5.7.19解压缩版教程详解

    记录了MySQL 5.7.19 winx64解压缩版安装教程,具体内容如下 系统环境:Win7 x64 软件准备:mysql 5.7.19 winx64 下载网址:https://dev.mysql.com/downloads/mysql/ 配置安装流程 具体安装如下: 1.把 mysql-5.7.19-winx64.zip 压缩文件解压到 C:\MySQL\ 目录下: 2.在 C:\MySQL\ 目录下新建 my.ini 配置文件: 3.用文本编辑器或其他编辑器打开 my.ini 文件,把以下

  • Mysql免安装版设置密码教程详解

    方法1: 用SET PASSWORD命令 MySQL -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 方法2:用mysqladmin mysqladmin -u root password "newpass" 如果root已经设置过密码,采用如下方法 mysqladmin -u root password oldpass "newpass" 方法3: 用UPDA

  • CentOS 7 x64下Apache+MySQL(Mariadb)+PHP56的安装教程详解

    每次搭建新服务器,都要来来回回把这些包再装一下,来来回回搞了不下20遍了吧,原来都是凭经验,配置过程中重复入坑是难免的,故写此文做个备忘.虽然有像xampp这样的集成包,但是在生产环境的Linux发行版上,还是通过包管理工具安装会放心.这次新买的服务器是CentOS 7(7.2)系统,相关配置也都以此版本为主,为方便操作,直接使用root用户配置. CentOS 7的源比较旧,自带的PHP是PHP 5.4,我们想要的是PHP 5.6,这就需要执行以下命令添加额外的remi源. rpm -ivh

  • MongoDB windows解压缩版安装教程详解

    创建目录如下 将mongodb的压缩包解压到mongodb目录下 mongodata下创建data目录存放数据:创建log目录存放目录 cmd 输入命令: D:\mongo\mongodb\bin\mongod.exe --dbpath "D:\mongo\mongodata\data" --logpath "D:\mongo\mongodata\log\MongoDB.log" --install --serviceName "mongo" -

  • Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)

    什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能.在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展. 接下来给大家介绍vuejs单向绑定.双向绑定.列表渲染.响应函数基础知识,具体详情如下所示: (一)单向绑定 <div id="app"> {{ message }} </div> <sc

随机推荐