SOAP净化有线协议:SOAP基础知识(一)

日期: 2007-12-17 来源:TechTarget中国

  一、SOAP简介

  SOAP用XML作为数据编码格式。用XML作为数据编码格式并非SOAP的原创,实际上这是一种相当自然的选择。XML-RPC和ebXML也同样使用XML。

  请考虑下面的Java接口:

  Listing 1

public interface Hello
{
public String sayHelloTo(String name);
}

  客户程序在调用sayHelloTo()方法时提供了一个名字,它希望从服务器接收到一则个性化的“Hello”信息。现在,假定RMI、CORBA和DCOM都不存在,开发者必须负责串行化方法调用,并把消息发送给远程机器。几乎所有的人都会说“这该使用XML”,我同意。因此,让我们先从对服务器的请求格式开始。假设要模拟sayHelloTo("John")调用,我打算发送的请求是:

  Listing 2

<?xml version="1.0"?>
<Hello>
<sayHelloTo>
<name>John</name>
</sayHelloTo>
</Hello>

  在这里,我把接口的名字作为根结点。另外,我还把方法名字和参数名字都当作节点。接下来,我们要把这个请求发送给服务器。我们不创建自己的TCP/IP消息,而是使用HTTP。因此,下面的步骤应该是把请求封装成HTTP POST请求格式,然后把它发送给服务器。实际创建该HTTP POST请求的详细过程在本文后面介绍,现在,我们先假定它已经创建完毕。服务器接收到了这个请求,解码XML,然后再以XML格式向客户程序发送应答。假设应答内容如下:

  Listing 3

<?xml version="1.0"?>
<Hello>
<sayHelloToResponse>
<message>Hello John, How are you?</message>
</sayHelloToResponse>
</Hello>

  根节点仍然是接口的名字Hello。但这一次,原来对应着方法的节点名字不再是sayHelloTo,而是方法的名字加上“Response”字符串。客户程序知道自己调用了哪一个方法,要找出被调用方法的返回值,它只需查看名字为方法名字加上“Response”字符串的元素。

  以上就是SOAP的根本思路。Listing 4显示了同一请求用SOAP XML编码之后的结果:

  Listing 4

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns_xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns_xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Header>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:sayHelloTo
xmlns:ns1="Hello"
SOAP-ENV:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/">
<name xsi_type="xsd:string">John</name>
</ns1:sayHelloTo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐