文章目录

  • 获取到的wsdl文件(以CXF发布的服务为例)
  • 文档节点
    • 1. definitions
    • 2. import
    • 3. binding
      • soap:binding元素
      • operation(name属性值是请求方法名)
    • 4. types(同样包含请求参数和响应参数)
    • 5. message(请求和响应参数)
    • 6. portType
    • 友情提醒
  • 请求需要的信息

获取到的wsdl文件(以CXF发布的服务为例)

以下说的节点标签都是去掉wsdl的

<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.webservice.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://webservice.com/" name="UserServiceImplService" targetNamespace="http://impl.webservice.com/"><wsdl:import location="http://localhost:8000/user?wsdl=IUserService.wsdl" namespace="http://webservice.com/"> </wsdl:import><wsdl:binding name="UserServiceImplServiceSoapBinding" type="ns1:IUserService"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="sayHi"><soap:operation soapAction="" style="document"/><wsdl:input name="sayHi"><soap:body use="literal"/></wsdl:input><wsdl:output name="sayHiResponse"><soap:body use="literal"/></wsdl:output></wsdl:operation></wsdl:binding><wsdl:service name="UserServiceImplService"><wsdl:port binding="tns:UserServiceImplServiceSoapBinding" name="UserServiceImplPort"><soap:address location="http://localhost:8000/user"/></wsdl:port></wsdl:service>
</wsdl:definitions>

复制import节点的location的值在浏览器中打开进一步获取详细的wsdl文件

<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://webservice.com/" name="IUserService" targetNamespace="http://webservice.com/"><wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservice.com/" elementFormDefault="unqualified" targetNamespace="http://webservice.com/" version="1.0"><xs:element name="sayHi" type="tns:sayHi"/><xs:element name="sayHiResponse" type="tns:sayHiResponse"/><xs:complexType name="sayHi"><xs:sequence><xs:element minOccurs="0" name="arg0" type="xs:string"/></xs:sequence></xs:complexType><xs:complexType name="sayHiResponse"><xs:sequence><xs:element minOccurs="0" name="return" type="xs:string"/></xs:sequence></xs:complexType></xs:schema></wsdl:types><wsdl:message name="sayHiResponse"><wsdl:part element="ns1:sayHiResponse" name="parameters"> </wsdl:part></wsdl:message><wsdl:message name="sayHi"><wsdl:part element="ns1:sayHi" name="parameters"> </wsdl:part></wsdl:message><wsdl:portType name="IUserService"><wsdl:operation name="sayHi"><wsdl:input message="ns1:sayHi" name="sayHi"> </wsdl:input><wsdl:output message="ns1:sayHiResponse" name="sayHiResponse"> </wsdl:output></wsdl:operation></wsdl:portType>
</wsdl:definitions>

一般这两个wsdl文件都是访问一次性是一个整体出来的,在这以两个文件出来经看其他博客是因为第一个wsdl文件的wsdl:definitions标签内的targetNamespace属性和wsdl:import中namespace属性的值不同。
解决方案:
1,将接口类和实现类放在同一个包下,问题即可解决
2,将接口类和实现类中的注解中加入命名空间属性配置,@WebService(targetNamespace=“XXXXX”),两个配置成一样即可,或者接口的配置成实现类的默认值、实现类的配置成接口的默认值也可解决问题。

文档节点

  1. definitions

1. definitions

所有WSDL文档的根节点都是definition节点
(1) definition元素中一般包括若干个XML命名空间;
http://schemas.xmlsoap.org/wsdl/是默认的命名空间,这样就可以不用显式地定义每一个WSDL元素的命名空间了,例如:<types> <messages> <portType>…;文档中所有的元素缺省应该属于这个命名空间。
(2)definition元素的的一个属性是name,此属性为访问接口实现类的类名加上了Service;
(3)targetNamespace属性是访问接口实现类的包名。

2. import

Import元素可以让当前的文档使用其他WSDL文档中指定命名空间中的定义。 必须声明两个属性,即namespace属性和location属性。namespace属性必须和正导入的WSDL文档中声明的targetNamespace相匹配。一般为域名,即包名的倒置。location属性必须指向一个实际的WSDL文档。可以通过此节点的location属性的值再次发送请求获取wsdl文件

3. binding

Binding元素将一个抽象的portType映射到一组具体的协议(SOAP或者HTTP)、消息传递样式(RPC或者document)以及编码样式(literal或者SOAP encoding)。binding 元素有两个属性 - name 属性和 type 属性。name 属性定义 binding 的名称,而 type 属性指向用于 binding 的端口(值为服务接口类名)

<wsdl:binding name="UserServiceImplServiceSoapBinding" type="ns1:IUserService">

soap:binding元素

soap:binding元素指定了用于传输SOAP消息的Internet协议以及operation缺省的消息类型(RPC还是document)

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

operation(name属性值是请求方法名)

operation元素指定了消息传递样式(RPC或者document),并且指定了SOAPAction字段的值(访问接口的方法名)。

<wsdl:operation name="sayHi"><soap:operation soapAction="" style="document"/>

4. types(同样包含请求参数和响应参数)

此内容包含了定义处理请求的接口中的函数名,参数类名和返回值类型其中sayHiResponse是函数名自动加上Response生成的,在实际中并没有。此文档中targetNamespace必须是一个有效的非空值,而且必须属于由WSDL文档。

<wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://webservice.com/" elementFormDefault="unqualified" targetNamespace="http://webservice.com/" version="1.0"><xs:element name="sayHi" type="tns:sayHi"/><xs:element name="sayHiResponse" type="tns:sayHiResponse"/><xs:complexType name="sayHi"><xs:sequence><xs:element minOccurs="0" name="arg0" type="xs:string"/></xs:sequence></xs:complexType><xs:complexType name="sayHiResponse"><xs:sequence><xs:element minOccurs="0" name="return" type="xs:int"/></xs:sequence></xs:complexType></xs:schema>
</wsdl:types>

5. message(请求和响应参数)

通信消息的数据结构的抽象类型化定义。引用types中定义的标签,包含请求和响应的参数名称和参数类型,此节点的name属性是请求方法加上类型,如请求是请求方法加上Request,此方法的响应是方法名加上Response

6. portType

对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。

友情提醒

如果解析soup协议返回的报文或者解析wsdl文件,我们会看到xml文件的节点会有soup开头的和wsdl开头的,但是解析的时候获取节点不用加上那个,只要后面的名称,如wsdl:import节点,解析是用import获取才能获取到

请求需要的信息

  1. 请求地址带?wsdl的
  2. 命名空间:属性targetNamespace的值
  3. 请求方法:上面operation节点的name属性值
  4. 请求参数:上面types节点或者message节点的信息

参考博客:
https://blog.csdn.net/fengspg/article/details/7404383

WebService--了解wsdl文件相关推荐

  1. WebService 之 WSDL文件 讲解

    http://blog.csdn.net/simbi/article/details/6254146 恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用 ...

  2. [转]WebService 之 WSDL文件 讲解

    原文地址:http://blog.csdn.net/tropica/archive/2008/11/02/3203892.aspx 恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时 ...

  3. webservice中wsdl文件说明

    wsdl文件结构分析 WSDL (Web Services Description Language,Web服务描述语言)是一种XML Application,他将Web服务描述定义为一组服务访问点, ...

  4. soapui和cxf的却别_根据wsdl文件用soapUi快速构建webService服务(有图有真相)

    最近公司业务上使用webservice 频繁.由于之前都是自己建立webservice 自己定义提供帮对方服务,现在则相反需求都是根据人家提供的wsdl 文件来生成 我们系统必须提供的接口.刚起初不知 ...

  5. axis2 wsdl2java 报错_解决webService+axis2生成的wsdl文件有两个Bindings/Endpoint 的问题

    [    长时间不写东西,慢慢的觉得脱离了学习的轨道.我要记住学习中遇到的每一点问题.       CXF很久没有用过,但却并不陌生,异常不可避免.� ...] 笔者在MyEclipse开发平台上做了 ...

  6. 根据wsdl文件生成WebService客户端代码

    有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...

  7. cmd命令生成webservice_根据wsdl文件生成WebService客户端代码

    有时候在项目中,一个项目可能有好几个公司在做.系统之间难免会出现互相调用接口的现象,这时候有一种办法就是使用webService.本篇文章将介绍如何将对接系统提供的WebService接口,根据对方提 ...

  8. 【WebService】第五章、WSDL文件详解

    本章主要详细记录如何读懂一个WSDL描述文件. 在上一章里面我们已经成功部署了一个WebService服务,并且通过浏览器能够顺利的看到WSDL文件.那么该文件 表示什么含义呢?通过这个文件我们该如何 ...

  9. Java应用通过wsdl文件调用webservice

    当远程webservice提供的wsdl文件不规范,你使用各种webservice客户端框架工具都调用失败时,不妨采用最原始的调用方式,这种方式让你拥有最高的控制权和灵活度,一定能为你解决webser ...

  10. cxf使用wsdl文件生成代码

    1.先下载cxf包 http://cxf.apache.org/download.html,现在cxf包.(下载资源就有) 2.解压缩包,通过cmd命令进入到bin目录下(cd cxf\bin的路径) ...

最新文章

  1. SpringMVC 学习-异常处理 SimpleMappingExceptionResolver 类
  2. boost::fusion::unfused用法的测试程序
  3. How to include html native content to UI5 page - 直接在xml view里添加html namespace
  4. C++中String类的实现
  5. python调用数据库数据类型_Python使用Mysql官方驱动(取出dict类型的数据)
  6. 厦门信息计算机专业录取分数,厦门大学计算机类(含计算机科学与技术、智能科学与技术、网络专业2016年在福建理科高考录取最低分数线...
  7. java类与对象 演练 客户姓名添加与查看
  8. win 系统 32X- 64X 任意安装方法
  9. ASP.NET页面刷新的实现方法
  10. 制药企业核算报表系统整体方案
  11. python3基础学习(XML文件解析)
  12. Python使用wxpython制作简单文本编辑器
  13. RN开发系列<2>--基本调试
  14. 关于QTTabBar的使用
  15. 2D激光雷达的多传感器拼接
  16. STL之vector的push_back过程详解
  17. 自然语言和计算机语言二义性,二级C++精品课程第一章第一节计算机语言及其发展...
  18. 2020年计算机二级报名时间上半年,2020年上半年计算机二级报名时间是什么时候...
  19. Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法
  20. 【域控管理】域控的必要性

热门文章

  1. 借书表设计 mysql_请设计一套图书馆借书管理系统的数据库表结构
  2. 202007219 Oracle建表语句
  3. html5网上购物平台论文,网上购物系统毕业论文
  4. vs2010操作excel 需要安装office2010
  5. python 官方中文文档(在线)
  6. 【备忘】elasticsearch所有版本的x-pack-sql-jdbc下载地址
  7. vmware 14 密钥
  8. 01-2制作U盘启动盘--装机助理工具
  9. 提取文本手机号 易语言代码
  10. TCP/IP四层模型和OSI七层模型的概念