CN101771701A - Web服务客户端自动化生成方法和装置 - Google Patents
Web服务客户端自动化生成方法和装置 Download PDFInfo
- Publication number
- CN101771701A CN101771701A CN201010033676A CN201010033676A CN101771701A CN 101771701 A CN101771701 A CN 101771701A CN 201010033676 A CN201010033676 A CN 201010033676A CN 201010033676 A CN201010033676 A CN 201010033676A CN 101771701 A CN101771701 A CN 101771701A
- Authority
- CN
- China
- Prior art keywords
- data
- web service
- data type
- complex
- type
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种Web服务客户端自动化生成方法和装置,其中,方法包括接收Web服务的WSDL文档;对所述WSDL文档进行基本信息解析和复杂数据类型参数解析,得到简单数据类型对象和复杂数据类型对象;根据所述简单数据类型对象和复杂数据类型对象,生成分别与之对应的简单类型数据接口和复杂类型数据接口;通过所述接口获取数据;检验所述数据是否符合数据结构,若是,则根据所述数据生成用于调用Web服务的SOAP请求报文;接收SOAP应答报文,解析得到Web服务调用结果,完成Web服务客户端的生成。本发明实施例实现了对WSDL文档中复杂数据类型的解析,有利于Web服务客户端自动化的生成。
Description
技术领域
本发明实施例涉及Web服务技术领域,尤其涉及一种Web服务客户端自动化生成方法和装置。
背景技术
当今,Web服务作为一种新兴的模式,正在逐渐应用于人们的计算当中。Web服务使用了开放的标准,促进了完全不同的应用程序和平台之间的通信。支持Web服务的一个重要标准就是WSDL,即Web服务描述语言,WSDL是一种基于XML的语言。每个Web服务都配有相关的WSDL文档,该WSDL文档记录了使开发人员能够运用这个服务的信息,其中列举了该服务的功能,说明了服务在Web上的位置,并提供了使用它的指令;还定义了Web服务能够发送和接受的消息种类,以及规定了调用程序必须提供给Web服务的数据,以便该服务能够执行等信息。如果要调用Web服务,一般是通过一Web服务客户端自动化的生成装置,接收该Web服务的WSDL文档,对其进行解析,得到文档中所记录的使用Web服务所需要的相关信息,并根据此信息生成可以调用Web服务的客户端。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:
随着Web服务种类的增多以及实现难度的加深,在上述Web服务客户端自动化的生成过程中,作为描述Web服务的WSDL文档的结构不再仅仅由简单数据类型构成,而是增加了许多复杂数据类型结构,这些复杂数据类型结构关联繁复,自定义性强且形式多样;但是,现有的Web服务客户端自动化的生成装置不能够支持WSDL文档中复杂数据类型的解析,在客户端的生成过程中不对复杂数据类型进行解析,从而给Web服务客户端自动化的生成和用户端的Web服务调用带来了不便。
发明内容
本发明实施例提供一种Web服务客户端自动化生成方法和装置,用以解决现有技术中不能够支持WSDL文档中复杂数据类型解析的缺陷,实现对WSDL文档中复杂数据类型解析,有利于Web服务客户端自动化的生成。
本发明实施例提供一种Web服务客户端自动化生成方法,包括:
步骤1、接收Web服务的WSDL文档;
步骤2、对所述WSDL文档进行基本信息解析,得到简单数据类型对象和复杂数据类型参数,所述简单数据类型对象包括调用所述Web服务所需的简单类型数据结构;
步骤3、解析所述复杂数据类型参数,得到复杂数据类型对象,所述复杂数据类型对象包括调用所述Web服务所需的复杂类型数据结构;
步骤4、根据所述简单数据类型对象生成简单类型数据接口,根据所述复杂数据类型对象生成复杂类型数据接口;
步骤5、通过所述简单类型数据接口获取调用简单类型数据,通过所述复杂类型数据接口获取复杂类型数据;
步骤6、检验所述简单类型数据是否符合所述简单类型数据结构,检验所述复杂类型数据是否符合所述复杂类型数据结构,若是,则执行步骤7,否则,执行报错;
步骤7、根据所述简单类型数据和复杂类型数据生成用于调用Web服务的SOAP请求报文;
步骤8、接收调用所述Web服务返回的SOAP应答报文,对SOAP应答报文进行解析,生成简单数据类型对象和复杂数据类型对象,解析得到Web服务调用结果,完成Web服务客户端的生成。
本发明实施例提供一种Web服务客户端自动化生成装置,包括:
接收模块,用于接收Web服务的WSDL文档;
解析模块,用于对所述WSDL文档进行基本信息解析,得到简单数据类型对象和复杂数据类型参数,所述简单数据类型对象包括调用所述Web服务所需的简单类型数据结构;以及,解析所述复杂数据类型参数,得到复杂数据类型对象,所述复杂数据类型对象包括调用所述Web服务所需的复杂类型数据结构;
接口模块,用于根据所述简单数据类型对象生成简单类型数据接口,根据所述复杂数据类型对象生成复杂类型数据接口;并通过所述简单类型数据接口获取调用所述Web服务所需的简单类型数据,通过所述复杂类型数据接口获取调用所述Web服务所需的复杂类型数据;
检验模块,用于检验所述简单类型数据是否符合所述简单类型数据结构,检验所述复杂类型数据是否符合所述复杂类型数据结构;
SOAP报文生成模块,用于在所述检验模块的检验结果为是时,根据所述简单类型数据和复杂类型数据生成SOAP请求报文;
SOAP报文处理模块,用于接收调用所述Web服务返回的SOAP应答报文,并将所述SOAP应答报文进行解析,生成简单数据类型对象和复杂数据类型对象,得到Web服务调用结果。
本发明实施例的Web服务客户端自动化生成方法和装置,通过采用深度优先递归算法对WSDL文档中的复杂数据类型进行解析,克服了现有技术中不能够支持WSDL文档中复杂数据类型解析的缺陷,实现了对WSDL文档中复杂数据类型的解析,有利于Web服务客户端自动化的生成。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明Web服务客户端自动化生成方法实施例的流程示意图;
图2为图1中的基本信息解析的流程示意图;
图3为图1中的复杂数据解析的流程示意图;
图4为本发明Web服务客户端自动化生成装置实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的主要技术方案为,接收与Web服务对应的WSDL文档,可以采用深度优先递归算法解析其中的复杂数据类型参数,得到复杂类型数据结构,包括参数名称、类型以及参数间的继承关系等信息;根据该复杂类型数据结构生成与之对应的数据接口,通过该数据接口输入调用所需的参数,并可以采用深度优先递归算法生成包含该参数的SOAP请求报文,进行Web服务的调用,并对返回的SOAP应答报文进行解析,完成Web服务客户端的生成。下面通过附图和具体实施例,对本发明的技术方案作进一步的详细描述。
图1为本发明Web服务客户端自动化生成方法实施例的流程示意图,如图1所示,本实施例的方法可以包括以下步骤:
步骤101、接收Web服务的WSDL文档。
由于本实施例的Web服务客户端自动化的生成方法是针对WSDL文档的,所以在该步骤中,需要对接收的Web服务的相关文档进行校验和筛选,排除非WSDL文档的部分;并将WSDL文档的绝对地址保存至信息存储器。通过将WSDL文档的绝对地址保存至信息存储器,可以使得后续对WSDL文档解析时,直接从该信息存储器中按照文档地址获取要解析的WSDL文档,对于各Web服务对应的WSDL文档具有通用性。
步骤102、对所述WSDL文档进行基本信息解析。
由于Web服务的复杂度不同,所对应的WSDL文档的复杂度也不同,因此,WSDL文档的解析根据其复杂度,可以划分为两个处理过程,即WSDL基本信息解析和WSDL复杂数据类型处理。对于简单的WSDL文档,其中只包括简单数据类型,则只需调用WSDL基本信息解析过程即可;对于包括复杂数据类型的WSDL文档,则需要在基本信息解析的基础上,对其中的复杂数据类型做进一步的解析。本步骤中是说明WSDL基本信息解析的过程。
在进行基本信息解析时,首先,解析出WSDL文档中所包含的域名空间URL以及SOAP的地址,然后,解析出WSDL文档中的各种元素,得到调用Web服务所需的简单数据类型参数定义,其中规定了该参数的名称和类型等信息。对于这些元素的具体解析步骤可以参见图2,图2为图1中的基本信息解析的流程示意图,其可以包括以下步骤:
步骤201、解析Service元素,获取Web服务地址,并读取出其下面的所有Port元素。
步骤202、解析Port元素,读取出其address元素。
在构建SOAP消息时,它是SOAP的目标URL,将会把它放在每一个Operation类中(因为Operation类对应一条SOAP消息)。读取出其对应的Binding元素。
步骤203、解析Binding元素。
读取该Binding元素的style,将其放入每一个Operation中,它对应的是调用方式是”document”或”rpc”。读取出它所绑定的所有Operation元素。
步骤204、解析Operation元素。
读取其name属性,作为Operation类的targetmethodname,将是SOAP消息中的方法名。读取其soapAction,作为SOAP消息的目标命名空间。读取它的Bindinginput和Bindingoutput,分别描述了输入SOAP消息和输出SOAP消息。将每个Operation元素放入Service对象中。
步骤205、解析Bindinginput和Bindingoutput。
读取其encodingstyle将其放入其对应的Operation中,SAAJ需要据此设置SOAP的编码类型。读取它们各自对应的Message元素。将inmessage放入Operation中,用于调用时构建SOAP消息的有效负载。
步骤206、解析Message元素。
Message元素是WSDL文档中最复杂的部分,它描述了SOAP消息的有效负载。通过解析该Message元素获取多个paramter,并对每个paramter的数据类型进行判断。若paramter为简单数据类型,则将parameter的名和类型直接保存至List队列,即简单数据类型对象,执行步骤104;若paramter为复杂数据类型,则继续执行步骤103,对该复杂数据类型的paramter作进一步的解析。
步骤103、对具有复杂数据类型的信息进行解析;
复杂数据类型信息在WSDL文档中以<complextype>节点表述,当检索到该节点时,WSDL解析将由WSDL基本信息解析过程转入WSDL复杂数据类型处理过程。
例如,该步骤对通过解析message元素获取的复杂数据类型的parameter进行进一步的解析。本实施例中可以采用WSDL4J和Castor的技术进行文档到对象的转换,并采用深度优先递归算法解析该复杂数据类型的parameter。深度优先递归算法是一种优先扩展尚未扩展的且具有最大深度的节点,在搜索过程中,该算法可以记下完整的搜索树。在WSDL文档复杂数据类型的解析过程中,若某一parameter为复杂数据类型,则转到该parameter的子节点继续遍历,直到该parameter的所有子节点被遍历完全,且均为简单数据类型为止;再遍历与该parameter并行的其余树节点。在遍历过程中,将未完全遍历的所述复杂数据类型参数保存为父节点,并将完全遍历所述复杂数据类型参数得到的简单数据类型参数保存为简单数据类型对象,作为叶节点。
具体的解析流程可以参见图3,图3为图1中复杂数据解析的流程示意图,可以包括以下步骤:
步骤301、判断Message中的元素p是否为空或完全遍历,若是,则结束;否则,执行步骤302。
步骤302、依次获取Message中的元素p中的各子元素p[i],包括p[i]的名称和数据类型。
步骤303、判断p[i]的数据类型是否为复杂数据类型,若否,则执行步骤304;否是,则执行步骤305。
步骤304、保存元素的名称、类型到简单数据类型对象,作为叶节点;
在步骤303之后,即为保存p[i]的名称、类型到简单数据类型对象。
步骤305、将所述p[i]转到WSDL文档中的type下,得到其在type下相应的数据类型p1。
步骤306、判断p1的数据类型是否为复杂数据类型,若否,则返回执行步骤304,保存p1的名称、类型到简单数据类型对象;否则,将其保存为父节点,执行步骤307。
步骤307、判断p1中的元素是否完全遍历;若否,则执行步骤310;否则,执行步骤308。
步骤308、判断p1是否为与p[i]对应的type下的p1;若否,则执行步骤309;否则,返回执行步骤301。
步骤309、查找p1的父节点,p1的父节点->p1,返回执行步骤307。
步骤310、保存p1的元素名称、数据类型到复杂数据类型对象;并依次获取p1中的p2[j],包括p2[j]的名称和数据类型。
步骤311、判断p2[j]的数据类型是否为复杂数据类型,若否,则执行步骤312;否则,令p2[j]->p1,返回执行步骤307。
步骤312、保存p2[j]为p1的子节点(名称、数据类型),返回执行步骤307。
经过上述解析步骤,对于WSDL文档中的简单数据类型的parameter和复杂数据类型的parameter均进行了解析,将XML的WSDL文档转换为了对象。其中,对于复杂数据类型的parameter,一方面解析出了其名、类型等基本信息;另一方面解析出了每个复杂数据类型节点的继承关系,从而建立一个前后继承的复杂数据类型树形结构。最后可以以ArrayList数组队列的形式存储对复杂数据类型解析的结果,生成复杂数据类型对象。
步骤104、根据WSDL文档解析结果生成可供Web服务使用者操作的数据接口。
在解析出WSDL文档中的元素后,需要提供一个可供Web服务使用者操作的输入输出数据的接口,该接口需要明确表示出WSDL文档中输入输出变量的数据结构。需要强调说明的是,该步骤中生成的数据接口与现有技术中的数据接口存在明显不同。现有技术中,通常可以将WSDL文档解析得到的数据类型存储为Java类语言描述形式,但是,这种表示方式不提供调用Web服务所需的SOAP请求消息,在调用Web服务时,仍然需要人工编写调用代码,对于从未接触过WSDL和Java的用户来说,是很困难的;而且数据表示结构对用户端不透明,无法满足用户端透明性操作的需求。
区别于此,也为了解决上述问题,本实施例的方法中,数据接口的生成,将WSDL文档解析结果基于RCP生成可视化的数据接口,RCP为富客户端平台,富客户端可以提供可承载已编译客户端应用程序的运行环境,客户端应用程序使用异步客户/服务器架构连接现有的后端应用服务器。该数据接口明确表示出了WSDL文档中输入输出变量的数据结构,并根据数据类型的不同,提供不同的接口。例如,对于简单数据类型对象,生成简单类型的数据接口,表示了简单数据类型参数的名称和类型;对于复杂数据类型对象,生成与复杂数据类型相对应的接口,该接口可提供可视化的复杂数据类型结构表示,且能够清晰地表达复杂数据类型节点间的继承关系。
该步骤中生成的数据接口为基于RCP的用户操作界面,用户只需要调用WSDL文档地址,而不需知道WSDL的文件格式、文件内容以及如何完成服务调用,就可以完成WSDL文档的解析,以及后续的SOAP报文的生成等,最终提供给用户直观的结果显示,而且此过程中不需要用户自行编写客户端代码,也不需要理解XML文本,从而满足了用户端透明性操作的需求,以及客户端自动化和良好的用户界面的系统要求。
步骤105、通过所述数据接口输入调用所需数据。
在上述的步骤中,对WSDL文档中的简单数据类型和复杂数据类型的元素均进行了解析,得到了生成Web服务客户端所需的参数,以及参数的名称、类型等基本信息,对其中的复杂数据类型参数还解析出了其继承关系,清晰的表示了WSDL文档中所含的数据结构信息;并且在步骤104中,还将该数据信息以可视化数据接口的形式呈现给用户端。
在此基础上,当进行调用Web服务的操作时,用户即Web服务使用者只需输入与Parameter相对应的参数,并将输入的参数值设定为Parameter的Value属性即可。该参数为后续生成SOAP消息所需的参数。
步骤106、对输入的所述数据进行检验,检查是否符合数据类型,若是,则执行步骤107,否则,执行报错。
该步骤用于检验生成SOAP消息的数据的类型是否符合WSDL文档解析结果中所规定的类型,其主要包括两方面的检验,检验必填数据的值是否存在,若存在,则进一步判断所填入的数据的值的类型是否符合规定的数据类型。对于必填数据的值不存在,或者数据类型错误的情况,提供报错提示。
步骤107、根据输入的所述数据生成用以调用Web服务的SOAP请求报文。
本步骤中,SOAP请求报文的生成,可以根据WSDL文档中不同复杂度的数据类型,根据一定的递归算法,生成不同难易度的可供服务调用的SOAP请求报文。该SOAP请求报文与输入的数据相关。
SOAP请求报文中主要包括三方面信息,包括Web服务绑定协议的调用类型、Web服务的URI地址和Web服务调用所需的参数。具体的,首先,可以通过查找WSDL文档中的Binding元素,得到所调用Web服务的绑定协议,分析该绑定协议的调用类型。然后,查找WSDL文档对象中的Port信息,确定Web服务的具体访问点,例如,如果是基于HTTP的SOAP调用,则取出服务的URI地址。最后,在得到具体的访问点后,构造调用所需的参数;对于简单的数据类型,则将简单数据类型对象的名称、类型和值直接写入XML节点;对于复杂数据类型,则依次遍历复杂数据类型对象各节点,对于父节点则将父节点的名称写入XML节点中,对于叶节点则将叶节点的名称、类型和值写入XML节点中,生成可供服务调用的SOAP请求报文,就可以利用该SOAP请求报文发起Web服务调用了。
上述SOAP请求报文的生成过程具体可以包括以下步骤:
步骤401、根据用户输入,在简单数据类型对象\复杂数据类型对象中查找相同对象;
步骤402、判断该对象是否为简单数据类型对象;若是,执行步骤403,否则,执行步骤404;
步骤403、根据简单数据类型对象生成含有名称、值信息的XML节点;
步骤404、根据复杂数据类型对象生成XML节点。
具体的,遍历该复杂数据类型对象中的元素,判断元素是否为父节点,若是,只生成含有名称的XML节点,否则,生成含有名称、值信息的XML节点,并将其嵌套到该子节点的父节点生成的XML节点中。
步骤108、接收并解析SOAP应答报文。
由于Web服务客户端要求不仅能够生成SOAP请求报文,对Web服务发起调用,还要能够对返回的SOAP应答报文进行解析,告知Web服务使用者调用结果,因此,一个完整的Web服务客户端的生成方法还包括对SOAP应答报文的解析。
本步骤中,在接收到SOAP应答报文后,可以采用前述的WSDL文档的信息解析过程,对报文进行解析,生成简单数据类型对象和复杂数据类型对象,将XML格式转换为数据对象。对于解析得到的结果数据,在进行数据检验后,可以通过可视化的数据接口进行显示。
上述解析SOAP应答报文的过程具体可以包括以下步骤:
步骤501、遍历XML文件格式的SOAP应答报文,获取XML中的头节点元素p;
步骤502、判断p是否有子节点,若有,则将其保存为复杂数据类型对象,遍历其子节点p1,反复执行步骤502,否则,将p1的名称、类型、值保存至简单数据类型对象,执行步骤503;
步骤503、判断p1是否有父节点,若有,则将其作为该父节点的子节点,否则,作为简单数据类型对象存储。
本发明实施例的Web服务客户端自动化生成方法,通过采用深度优先递归算法对WSDL文档中的复杂数据类型进行解析,克服了现有技术中不能够支持WSDL文档中复杂数据类型解析的缺陷,实现了对WSDL文档中复杂数据类型的解析,有利于Web服务客户端自动化的生成;并且,通过生成基于RCP的可视化的数据接口,满足了用户端透明性操作的需求,实现了Web服务客户端生成的完全自动化。
图4为本发明Web服务客户端自动化生成装置实施例的结构示意图,如图4所示,本实施例的生成装置可以包括接收模块61、解析模块62、接口模块63、检验模块64、SOAP报文生成模块65和SOAP报文处理模块66。
其中,接收模块61,接收Web服务的WSDL文档;
解析模块62,对接收模块61接收到的所述WSDL文档进行基本信息解析,得到简单数据类型对象和复杂数据类型参数,所述简单数据类型对象包括调用所述Web服务所需的简单类型数据结构;以及,解析所述复杂数据类型参数,得到复杂数据类型对象,所述复杂数据类型对象包括调用所述Web服务所需的复杂类型数据结构;
具体的,对基本信息的解析包括解析出WSDL文档中所包含的域名空间URL以及SOAP的地址,并解析出WSDL文档中的各种元素。对该具体元素的解析可以参见方法实施例中的步骤102。在解析得到WSDL文档中复杂数据类型的Message元素中的paramter后,执行复杂数据解析。在该复杂数据解析过程中,可以采用深度优先递归算法。
相应的,解析模块62可以包括搜索单元和存储单元。在采用深度优先递归算法解析复杂数据类型时:
搜索单元,可以用于依次遍历所述复杂数据类型参数。存储单元,可以用于将未完全遍历的所述复杂数据类型参数保存为复杂数据类型对象中的父节点,并将完全遍历所述复杂数据类型参数得到的简单数据类型参数保存为简单数据类型对象,作为所述复杂数据类型对象中的叶节点,生成具有树形结构的复杂数据类型对象。
接口模块63,用于根据解析模块62得到的所述简单数据类型对象生成简单类型数据接口,根据所述复杂数据类型对象生成复杂类型数据接口。上述接口明确表示出了WSDL文档中输入输出变量的数据结构。接着,接口模块63可以通过所述简单类型数据接口获取Web服务使用者输入的调用所述Web服务所需的简单类型数据,通过所述复杂类型数据接口获取调用所述Web服务所需的复杂类型数据。
在此基础上,接口模块63可以包括RCP单元,用于根据所述简单数据类型对象生成基于RCP的简单类型数据接口,根据所述复杂数据类型对象生成基于RCP的复杂类型数据接口。
检验模块64,用于检验获取的所述简单类型数据是否符合所述简单类型数据结构,检验所述复杂类型数据是否符合所述复杂类型数据结构;
SOAP报文生成模块65,用于在所述检验模块64的检验结果为是,即输入数据符合数据结构的规定时,根据所述简单类型数据和复杂类型数据生成SOAP请求报文,即可利用该报文进行Web服务的调用。
具体的,SOAP报文生成模块65可以包括第一复杂数据类型处理单元,用于采用所述深度优先递归算法,遍历所述复杂类型数据结构,将所述复杂类型数据写入XML节点,生成SOAP请求报文。
SOAP报文处理模块66,用于接收调用所述Web服务返回的SOAP应答报文,并将所述SOAP应答报文发送至所述解析模块62进行解析,生成简单数据类型对象和复杂数据类型对象,得到Web服务调用结果。相应的,解析模块62可以包括第二复杂数据类型处理单元,用于采用所述深度优先递归算法对所述SOAP应答报文中的XML节点进行解析,生成复杂数据类型对象,得到Web服务调用结果。
在此基础上,接口模块63中的RCP单元还可以将解析得到的所述Web服务调用结果在所述基于RCP的简单类型数据接口和复杂类型数据接口进行显示。
本发明实施例的Web服务客户端自动化生成装置,通过采用深度优先递归算法对WSDL文档中的复杂数据类型进行解析,克服了现有技术中不能够支持WSDL文档中复杂数据类型解析的缺陷,实现了对WSDL文档中复杂数据类型的解析,有利于Web服务客户端自动化的生成;并且,通过生成基于RCP的可视化的数据接口,满足了用户端透明性操作的需求,实现了Web服务客户端生成的完全自动化。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种Web服务客户端自动化生成方法,其特征在于,包括:
步骤1、接收Web服务的WSDL文档;
步骤2、对所述WSDL文档进行基本信息解析,得到简单数据类型对象和复杂数据类型参数,所述简单数据类型对象包括调用所述Web服务所需的简单类型数据结构;
步骤3、解析所述复杂数据类型参数,得到复杂数据类型对象,所述复杂数据类型对象包括调用所述Web服务所需的复杂类型数据结构;
步骤4、根据所述简单数据类型对象生成简单类型数据接口,根据所述复杂数据类型对象生成复杂类型数据接口;
步骤5、通过所述简单类型数据接口获取调用简单类型数据,通过所述复杂类型数据接口获取复杂类型数据;
步骤6、检验所述简单类型数据是否符合所述简单类型数据结构,检验所述复杂类型数据是否符合所述复杂类型数据结构,若是,则执行步骤7,否则,执行报错;
步骤7、根据所述简单类型数据和复杂类型数据生成用于调用Web服务的SOAP请求报文;
步骤8、接收调用所述Web服务返回的SOAP应答报文,对SOAP应答报文进行解析,生成简单数据类型对象和复杂数据类型对象,解析得到Web服务调用结果,完成Web服务客户端的生成。
2.根据权利要求1所述的Web服务客户端自动化生成方法,其特征在于,所述步骤3中为采用深度优先递归算法解析所述复杂数据类型参数,得到复杂类型数据结构,包括:
依次遍历所述复杂数据类型参数,将未完全遍历的所述复杂数据类型参数保存为复杂数据类型对象中的父节点,并将完全遍历所述复杂数据类型参数得到的简单数据类型参数保存为简单数据类型对象,作为所述复杂数据类型对象中的叶节点。
3.根据权利要求2所述的Web服务客户端自动化生成方法,其特征在于,所述步骤7包括:
采用所述深度优先递归算法,遍历所述复杂类型数据结构,将所述复杂类型数据写入XML节点,生成SOAP请求报文。
4.根据权利要求2所述的Web服务客户端自动化生成方法,其特征在于,所述步骤3还包括:
采用所述深度优先递归算法对所述SOAP应答报文中的XML节点进行解析,生成复杂数据类型对象,得到Web服务调用结果。
5.根据权利要求1所述的Web服务客户端自动化生成方法,其特征在于,所述步骤4具体为:
根据所述简单数据类型对象生成基于RCP的简单类型数据接口,根据所述复杂数据类型对象生成基于RCP的复杂类型数据接口。
6.根据权利要求4所述的Web服务客户端自动化生成方法,其特征在于,所述步骤8还包括:
将解析得到的所述Web服务调用结果在基于RCP的简单类型数据接口和复杂类型数据接口进行显示。
7.一种Web服务客户端自动化生成装置,其特征在于,包括:
接收模块,用于接收Web服务的WSDL文档;
解析模块,用于对所述WSDL文档进行基本信息解析,得到简单数据类型对象和复杂数据类型参数,所述简单数据类型对象包括调用所述Web服务所需的简单类型数据结构;以及,解析所述复杂数据类型参数,得到复杂数据类型对象,所述复杂数据类型对象包括调用所述Web服务所需的复杂类型数据结构;
接口模块,用于根据所述简单数据类型对象生成简单类型数据接口,根据所述复杂数据类型对象生成复杂类型数据接口;并通过所述简单类型数据接口获取调用所述Web服务所需的简单类型数据,通过所述复杂类型数据接口获取调用所述Web服务所需的复杂类型数据;
检验模块,用于检验所述简单类型数据是否符合所述简单类型数据结构,检验所述复杂类型数据是否符合所述复杂类型数据结构;
SOAP报文生成模块,用于在所述检验模块的检验结果为是时,根据所述简单类型数据和复杂类型数据生成SOAP请求报文;
SOAP报文处理模块,用于接收调用所述Web服务返回的SOAP应答报文,并将所述SOAP应答报文进行解析,生成简单数据类型对象和复杂数据类型对象,得到Web服务调用结果。
8.根据权利要求7所述的Web服务客户端自动化生成装置,其特征在于,所述解析模块包括:
搜索单元,用于依次遍历所述复杂数据类型参数;
存储单元,用于将未完全遍历的所述复杂数据类型参数保存为复杂数据类型对象中的父节点,并将完全遍历所述复杂数据类型参数得到的简单数据类型参数保存为简单数据类型对象,作为所述复杂数据类型对象中的叶节点。
9.根据权利要求8所述的Web服务客户端自动化生成装置,其特征在于,
所述SOAP报文生成模块包括:
第一复杂数据类型处理单元,用于采用所述深度优先递归算法,遍历所述复杂类型数据结构,将所述复杂类型数据写入XML节点,生成SOAP请求报文;
所述解析模块还包括:
第二复杂数据类型处理单元,用于采用所述深度优先递归算法对所述SOAP应答报文中的XML节点进行解析,生成复杂数据类型对象,得到Web服务调用结果。
10.根据权利要求7所述的Web服务客户端自动化生成装置,其特征在于,所述接口模块包括:
RCP单元,用于根据所述简单数据类型对象生成基于RCP的简单类型数据接口,根据所述复杂数据类型对象生成基于RCP的复杂类型数据接口;或者,用于将解析得到的所述Web服务调用结果在所述基于RCP的简单类型数据接口和复杂类型数据接口进行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010033676 CN101771701B (zh) | 2010-01-04 | 2010-01-04 | Web服务客户端自动化生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010033676 CN101771701B (zh) | 2010-01-04 | 2010-01-04 | Web服务客户端自动化生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101771701A true CN101771701A (zh) | 2010-07-07 |
CN101771701B CN101771701B (zh) | 2012-12-26 |
Family
ID=42504292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010033676 Expired - Fee Related CN101771701B (zh) | 2010-01-04 | 2010-01-04 | Web服务客户端自动化生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101771701B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567400A (zh) * | 2010-12-31 | 2012-07-11 | 阿里巴巴集团控股有限公司 | 一种实现Web访问的方法和Web服务器 |
WO2012126440A2 (zh) * | 2012-05-30 | 2012-09-27 | 华为技术有限公司 | 获取数据类型定义的方法、装置和系统 |
CN103064674A (zh) * | 2012-12-20 | 2013-04-24 | 北京思特奇信息技术股份有限公司 | Soap文件的生成方法及装置 |
CN103428019A (zh) * | 2012-05-24 | 2013-12-04 | 中兴通讯股份有限公司 | 一种网络服务消息的管理方法和系统 |
CN103473034A (zh) * | 2012-06-06 | 2013-12-25 | 阿里巴巴集团控股有限公司 | 一种动态发布Web 服务的方法和装置 |
CN104331640A (zh) * | 2014-10-17 | 2015-02-04 | 北京百迈客生物科技有限公司 | 基于生物云平台的项目结题报告分析系统和方法 |
CN105224296A (zh) * | 2014-06-19 | 2016-01-06 | 上海快测网络信息技术有限公司 | 基于独立第三方的Web服务Qos属性评价系统及其评价方法 |
CN105446867A (zh) * | 2014-08-22 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种测试数据的生成方法及装置 |
CN109086046A (zh) * | 2018-08-02 | 2018-12-25 | 中国建设银行股份有限公司 | 一种基于接口规范文档的前端代码自动生成方法及系统 |
CN112711690A (zh) * | 2020-12-28 | 2021-04-27 | 广州品唯软件有限公司 | 获取专题页面链接方法、系统和存储介质 |
CN113094195A (zh) * | 2021-04-30 | 2021-07-09 | 核动力运行研究所 | 一种接口调用文件的生成方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101588347A (zh) * | 2008-05-23 | 2009-11-25 | 中兴通讯股份有限公司 | 一种自动生成网络服务客户端的方法 |
CN101609415B (zh) * | 2009-07-17 | 2012-05-30 | 武汉大学 | 基于中间件的通用服务调用系统及方法 |
-
2010
- 2010-01-04 CN CN 201010033676 patent/CN101771701B/zh not_active Expired - Fee Related
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567400B (zh) * | 2010-12-31 | 2014-09-03 | 阿里巴巴集团控股有限公司 | 一种实现Web访问的方法和Web服务器 |
CN102567400A (zh) * | 2010-12-31 | 2012-07-11 | 阿里巴巴集团控股有限公司 | 一种实现Web访问的方法和Web服务器 |
CN103428019A (zh) * | 2012-05-24 | 2013-12-04 | 中兴通讯股份有限公司 | 一种网络服务消息的管理方法和系统 |
WO2012126440A2 (zh) * | 2012-05-30 | 2012-09-27 | 华为技术有限公司 | 获取数据类型定义的方法、装置和系统 |
CN102812690A (zh) * | 2012-05-30 | 2012-12-05 | 华为技术有限公司 | 获取数据类型定义的方法、装置和系统 |
WO2012126440A3 (zh) * | 2012-05-30 | 2013-04-18 | 华为技术有限公司 | 获取数据类型定义的方法、装置和系统 |
US9680940B2 (en) | 2012-05-30 | 2017-06-13 | Huawei Technologies Co., Ltd. | Method, device and system for acquiring data type definition |
CN102812690B (zh) * | 2012-05-30 | 2014-06-11 | 华为技术有限公司 | 获取数据类型定义的方法和装置 |
CN103473034B (zh) * | 2012-06-06 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 一种动态发布Web服务的方法和装置 |
CN103473034A (zh) * | 2012-06-06 | 2013-12-25 | 阿里巴巴集团控股有限公司 | 一种动态发布Web 服务的方法和装置 |
CN103064674A (zh) * | 2012-12-20 | 2013-04-24 | 北京思特奇信息技术股份有限公司 | Soap文件的生成方法及装置 |
CN105224296A (zh) * | 2014-06-19 | 2016-01-06 | 上海快测网络信息技术有限公司 | 基于独立第三方的Web服务Qos属性评价系统及其评价方法 |
CN105224296B (zh) * | 2014-06-19 | 2019-01-04 | 苏州市龙测智能科技有限公司 | 基于独立第三方的Web服务Qos属性评价系统及其评价方法 |
CN105446867A (zh) * | 2014-08-22 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种测试数据的生成方法及装置 |
CN104331640A (zh) * | 2014-10-17 | 2015-02-04 | 北京百迈客生物科技有限公司 | 基于生物云平台的项目结题报告分析系统和方法 |
CN104331640B (zh) * | 2014-10-17 | 2018-04-17 | 北京百迈客生物科技有限公司 | 基于生物云平台的项目结题报告分析系统和方法 |
CN109086046A (zh) * | 2018-08-02 | 2018-12-25 | 中国建设银行股份有限公司 | 一种基于接口规范文档的前端代码自动生成方法及系统 |
CN112711690A (zh) * | 2020-12-28 | 2021-04-27 | 广州品唯软件有限公司 | 获取专题页面链接方法、系统和存储介质 |
CN113094195A (zh) * | 2021-04-30 | 2021-07-09 | 核动力运行研究所 | 一种接口调用文件的生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101771701B (zh) | 2012-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101771701B (zh) | Web服务客户端自动化生成方法和装置 | |
CN110457143B (zh) | 微服务的调用方法及装置 | |
CN104111826A (zh) | 一种软件项目开发方法及装置 | |
CN101609415B (zh) | 基于中间件的通用服务调用系统及方法 | |
CN102098211B (zh) | 客户端和服务器动态协助的业务聚合方法、服务器和客户端 | |
CN101154157A (zh) | 为JavaScript应用提供全球化功能的系统和方法 | |
CN102819766A (zh) | 一种表单校验方法、装置及企业系统 | |
CN114138372B (zh) | 前端组件加载方法及装置 | |
CN111290951B (zh) | 测试方法、终端、服务器、系统及存储介质 | |
CN104035859A (zh) | 一种可视化自动测试方法及其系统 | |
US20130185322A1 (en) | Systems and methods for providing an electronic contact card | |
CN105138313A (zh) | 客户机应用程序和网页集成 | |
CN112988601A (zh) | 测试脚本开发方法及装置 | |
CN103034720A (zh) | 形成网页的方法、外围装置和系统 | |
CN105354236A (zh) | 一种对账信息生成方法及系统 | |
CN110968388A (zh) | 页面处理方法和系统 | |
CN108334784A (zh) | 一种漏洞扫描方法和装置 | |
CA2538561C (en) | System and method for conversion of web services applications into component based applications for devices | |
CN101527737A (zh) | 页面帮助信息的显示方法、系统及客户端 | |
CN103544036A (zh) | 页面加载方法、终端及系统 | |
CN101655796A (zh) | 基于Web的可扩展帮助系统及其实现方法 | |
CN105989010B (zh) | 一种Web页面数据生成方法、Web服务器、Web应用系统 | |
CN117762865A (zh) | 大数据平台的数据入湖方法及系统 | |
CN112785284A (zh) | 基于结构化文档的报文入库方法及装置 | |
CN111309319A (zh) | 可继承的局数据动态页面配置方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121226 Termination date: 20170104 |
|
CF01 | Termination of patent right due to non-payment of annual fee |