自己做一个程序放到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. C++静态数据成员实现

    静态数据成员是在一个类中用关键字static声明的数据成员.在C++中,一般使用静态成员来代替C语言的全局变量,以达到数据共享.C和C++的全局变量有一定的局限性,可以任意被修改,也容易和其它的变量名 ...

  2. docker中宿主机与容器(container)互相拷贝传递文件的方法

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/71425077 本文出自[我是干勾鱼的博客] 前面讲解过如何进入.退出docker ...

  3. 实战JAVA 高并发设计

    一.同步(Synchronous)和异步(Asynchronous) 同步和异步通常用来形容一次方法调用,同步方法,调用者必须等到方法调用返回后,才能继续后续的行为,异步方法调用会立即返回,调用者就可 ...

  4. 常用的两个PHP类

      /** * Class Interval * @author logonmy * @desc 简单分析程序执行时间: */   Class Interval{ var $start;   publ ...

  5. 【MFC】如何在MFC创建的程序中更改主窗口的属性 与 父窗口 WS_CLIPCHILDREN 样式 对子窗口刷新的影响 与 窗体区域绘制问题WS_CLIPCHILDREN与WS_CLIPSIBLINGS

    如何在MFC创建的程序中更改主窗口的属性 摘自:http://blog.sina.com.cn/s/blog_4bebc4830100aq1m.html 在MFC创建的单文档界面中: (基于对话框的, ...

  6. PHP读取文件函数fread,fgets,fgetc,file_get_contents和file函数的使用总结

    fread().fgets().fgetc().file_get_contents() 与 file() 函数用于从文件中读取内容. 1.fread() fread()函数用于读取文件(可安全用于二进 ...

  7. HTML服务器控件与Web服务器控件

    asp.net之所以现在开发方便和快捷,关键是它有一组强大的控件库,包括web服务器控件,web用户控件,web自定义控件,html服务器控件和html控件等.这里主要整理一下html控件.html服 ...

  8. mysql安装问题汇总

    操作系统:win7 mysql版本号:mysql 5.5(64位) 1.又一次安装mysql卡在最后一步过不去 问题描写叙述:第一次安装完mysql.使用jdbc写入的中文都是乱码.但已存在于数据库中 ...

  9. 使用 Git 来备份 MySQL 数据库

    使用 Git 来备份 MySQL 数据库 使用 mysqldump 导出 sql 文件 使用 git pull 提交到仓库 将脚本加入任务管理 mysqldump 导出时需要以下参数. --skip- ...

  10. Oracle 13c OEM 安装手册

    1       安装准备工作 以下包已Redhat 为准,其他版的操作系统以官方手册为准. 1.1         Oracle Management Service 依赖如下包 glibc-comm ...