zoukankan      html  css  js  c++  java
  • 5.使用SOAP的XML消息传递

    转自:https://blog.csdn.net/u014066037/article/details/51724658

    使用SOAP的XML消息传递的简易流程图:

    详细步骤如下:

    (1)服务请求者的应用程序创建一条SOAP消息,将此信息和服务提供者的网址一起提供给SOAP基础结构(例如一个SOAP客户机运行时)。SOAP客户机运行时与一个底层网络协议(例如HTTP)交互,然后在网络上将SOAP消息发送出去。
    (2)网络基础结构将消息传送到服务提供者的SOAP运行时(例如一个SOAP服务器)。SOAP服务器将请求消息路由到服务提供者的Web服务。如果应用程序需要,SOAP运行时负责将XML消息转换为特定于编程语言的对象。这个转换由消息中可以找到的编码模式所控制。
    (3) Web 服务负责处理请求信息并生成一个响应。该响应也是一条SOAP消息。响应的SOAP消息被提供给SOAP运行时,其目的地是服务请求者。在HTTP上的同步请求/响应的情况中,联网协议的底层请求/响应本质用于实现消息传递的请求/响应。SOAP运行时将SOAP消息响应发送到网络上的服务请求者。
    (4)响应消息由服务请求者节点上的联网基础结构接收。消息会经过整个SOAP基础结构;可能会将XML消息转换为目标编程语言中的对象。然后,响应消息被提供给应用程序
    [java] view plain copy
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. public interface Hello  
    2. {   
    3.     public String sayHelloTo(String name);  
    4. }  
    假设有上述接口定义的服务存在
    •  客户端在远程调用sayHelloTo方法时,提供一个名字,期望返回一个字符串
    • 假设Java RMI、CORBA、DCOM都不存在,开发者必须负责将方法调用串行化,并把消息发给远程服务器
    •  一个简单的方式是使用XML
    [html] view plain copy
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>  
    2. <Hello>   
    3.    <sayHelloTo>  
    4.     <name>John</name>   
    5.    </sayHelloTo>  
    6. </Hello>  
    7. </span>  
    用XML打包请求
    • 将接口名作为根结点
    • 方法和参数作为结点
    将请求发送给服务器
    • 不创建自己的TCP/IP消息,利用HTTP
    • 将请求封装成HTTP POST请求格式发出
    [html] view plain copy
     
     
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0"?>  
    2. <Hello>   
    3.    <sayHelloToResponse>  
    4.     <message>Hello John, How are you?</message>   
    5.    </sayHelloToResponse>  
    6. </Hello>  
    7. </span>  
    服务器接收到请求,解码XML,处理请求,然后以XML格式向客户发送响应
    • 与请求比较,方法的结点名字变为请求的方法名后缀Response
    • 客户程序知道自己调用了哪个方法,根据方法名后缀Response寻找调用方法的返回值
  • 相关阅读:
    hibernate-取消关联外键引用数据丢失抛异常的设置@NotFound
    css-画三角箭头
    tomcat提示警告: An attempt was made to authenticate the locked user"tomcat"
    liunx下tomcat启动 Cannot find ./catalina.sh
    java:提示Could not initialize class sun.awt.X11GraphicsEnvironment
    MySQL定时器开启、调用实现代码
    mysql-存储过程案例-存储过程中创建表和修改表数据
    PowerDesigner导出SQL时自动生成注释
    mysql-利润set变量模拟分组查询每组中的第N条数据
    HTTP 405 错误 – 方法不被允许 (Method not allowed)
  • 原文地址:https://www.cnblogs.com/sharpest/p/7873025.html
Copyright © 2011-2022 走看看