自己做一个程序放到tomcat里面这个就是服务,自己安装一个oracle,oracle启动之后那它本身就是一种服务。


WebService就是HTTP,那么它和HTTP有什么不同呢?

HTTP GET

HTTP GET和HTTP POST

soap=http post+xml

不管什么样的系统它都能解析xml,所以soap协议是一种标准。传递的内容不一样,是xml。而且必须是post请求。



POST请求真正要传递的数据,通过HTTP请求传递的。

soap:Envelop开头,xmlns:soap,soap是xml的命名空间。<mobileCode>string</mobileCode><userID>string</userID>跟业务逻辑无关的数据。


响应的消息

200 状态 请求成功


除了提供SOAP1.1和SOAP1.2的服务。还提供了HTTP GET和HTTP POST的服务。


肯定不是用手点人家的接口,而且是用程序调,用程序调人家的接口就要了解人家发布出来的服务的规则。了解webservice必须理解的一个东西是WSDL,相当于是一个数据运输,没有它你无法调用。WSDL是描述别人给你发布出来的接口的说明书。


如何读WSDL?从下往上读。根节点:<wsdl:definitions></wsdl:definitions> wsdl的定义。

<wsdl:service>是服务访问点集合。这里提供了多个服务的访问点。一个服务访问点针对一种请求方式。一个是以SOAP1.1的方式来做请求,那么这是一个服务访问点。SOAP1.1是一个服务的访问点,SOAP1.2又是一个服务访问点。HTTP GET和HTTP POST又是一个服务访问点。这里提供了四个服务访问点。

所以一共有四个wsdl:port。但是我们使用的是第一个。

虽然一共四个服务访问点,但是最终实现的只有一个:soap1.1。

Service是服务访问点集合,拿出一个那就是Port。访问点wsdl:port后面有一个Binding,服务访问点后面一定有一个对应的类给它做服务,这个类在java里面叫类,提供服务的类。wsdl:binding只是一种中间的关系,把一个具体的port绑定到一个具体的类上。

查找命名空间tns:MobileCodeWSSoap来找到服务访问点的wsdl:binding。


wsdl:portType就是服务访问点绑定的类。这个找到了,你就能调用它了。服务访问点绑定的类有三个。

服务访问点绑定的类wsdl:portType有什么东西呢?wsdl:operation,operation是操作,它就是我们的方法,有getMobileCodeInfo和getDatabaseInfo两种方法。<wsdl:operation>里面是什么呢?方法的里面是两个消息:wsdl:input输入消息和wsdl:output输出消息。

我们站在哪一端来看呢?我们站在服务端来看,把入参定义为输入消息。也就是:

从服务端,这一段是请求过来的。

这一段一定是响应过去的。所以每一次调用,都有两个消息,输入输出。即使返回值为空,也要有空的消息。


还是一样往上找,这里面具体的消息,还是查找命名空间tns:getMobileCodeInfoIn。

之前的这种消息有一种特殊的这样一种规则,必须在某一些元素里面写某一样的这样的数据,这样的数据到底是由谁来约束的呢?


再往上找。s:element来约束你的消息体的。

<s:sequence>定义的是序列,<s:sequence>也是一个元素<s:element>,<s:element>minOccurs最小出现或发生次数,maxOccurs最大出现或发生次数,name,type="s:string"字符串类型

这个s:element和响应过去客户端的消息体是对应的

03.WSDL分析的更多相关文章

  1. Mycat之日志分析跨分片事务以及存储过程的执行过程

    1 针对成功事务: 过程说明: 1.初始化连接,路由到各个分片 2.开启非阻塞执行更新,然后执行时候每个节点执行2次 3.执行提交,各节点返回commit 4.释放连接,先释放datasource然后 ...

  2. 常见 jar包详解

        常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...

  3. Java多线程系列--“JUC锁”06之 Condition条件

    概要 前面对JUC包中的锁的原理进行了介绍,本章会JUC中对与锁经常配合使用的Condition进行介绍,内容包括:Condition介绍Condition函数列表Condition示例转载请注明出处 ...

  4. 【异常】java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte

    异常信息:   java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte  at com.star.sms.busines ...

  5. java开发常用jar包介绍(转载)

    jta.jar 标准JTA API必要 commons-collections.jar 集合类 必要 antlr.jar  ANother Tool for Language Recognition ...

  6. JAR包介绍大全用途作用详解JAVA

    jta.jar 标准JTA API必要commons-collections.jar 集合类 必要antlr.jar  ANother Tool for Language Recognition 必要 ...

  7. 20160226.CCPP体系详解(0036天)

    程序片段(01):01.多线程.c+02.多线程操作.c 内容概要:多线程 ///01.多线程.c #include <stdio.h> #include <stdlib.h> ...

  8. 一款DMA性能优化记录:异步传输和指定实时信号做async IO

    关键词:DMA.sync.async.SIGIO.F_SETSIG. DMA本身用于减轻CPU负担,进行CPU off-load搬运工作. 在DMA驱动内部实现有同步和异步模式,异步模式使用dma_a ...

  9. 金融量化之Tushare模块

    一.介绍 Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们 ...

随机推荐

  1. 使用vscode书写博客

    很早就开始使用过vscode了,不过在已经成熟的sublime的碾压下,vscode一直没有成为我的首选,今天为了更好的博客书写体验,我直接放弃了sublime,因为 sublime对中文支持不好,而 ...

  2. OpenCV-Python cv2.imdecode()和cv2.imencode() 图片解码和编码

    cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像. cv2.imencode()函数是将图片格式转换(编码)成流数据,赋值 ...

  3. 官方:MySQL 5.7 并行复制实现原理与调优 | InsideMySQL(转载)

    MySQL 5.7并行复制时代 众所周知,MySQL的复制延迟是一直被诟病的问题之一,然而在Inside君之前的两篇博客中(1,2)中都已经提到了MySQL 5.7版本已经支持“真正”的并行复制功能, ...

  4. (三十八)js之柯里化

    先给大家介绍什么是柯里化与反柯里化 百度翻译: 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的 ...

  5. larave 控制器中获取路由参数

    Laravel中获取路由参数Route Parameters的五种方法示例 作者:SeekerLiu 这篇文章主要给大家介绍了关于Laravel中获取路由参数Route Parameters的五种方法 ...

  6. Rhel7安装及网卡、yum、vmtools配置和修改主机名

    (1)安装Vmware WorkStation 11.0 和 RetHatEnterpriseLinux[RHEL]7.0 步骤就不描述了,网上都可以找到 (2)安装VMware Tools )虚拟机 ...

  7. Arcgis Desktop连接GIS Servers报错“Proxy server got bad address from remote server ...”

    今天打开Arcgis Desktop时突然发现连接GIS Servers报错“Proxy server got bad address from remote server ...” 网上查找到解决方 ...

  8. margin和padding理解

    W3C组织建议把所有网页上的对像都放 在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落.列表.标题.图片以及层. 盒模型主要定义四个区域:内容 (content).边框 ...

  9. LeetCode Minimum Time Difference

    原题链接在这里:https://leetcode.com/problems/minimum-time-difference/description/ 题目: Given a list of 24-ho ...

  10. 转载 基于NicheStack协议栈的TCP/IP实现

    一.摘要 Altera软件NIOS II高版本(7.2版本以上,本例程中使用的是9.0版本)中实现TCP/IP所用的协议栈为NicheStack,常用的例程有2个,web_server和simple_ ...