轻松掌握WebService技术后台—Soap图解法

长平狐 发布于 2012/12/10 17:18
阅读 102
收藏 0
上篇博客中我们已经从宏观上介绍了WebService,以及WebService三大技术支持后台。
    那我们这篇博客给大家介绍以下Soap以及WSDL的模样。首先从长相外表上了解一个事物,然后通过后期实践不断深入了解。嘻嘻,其实对人的了解何尝又不是呢?学习其实是与生活本来是想通的,很多学习的道理或方法都是来自生活。好啦,我们不感慨人生了,直奔这篇博客的主题。
  
    SOAP是WebService消息传输的格式,我们运行一个程序时,只看到运行的结果是否符合我们的要求,其实背后又是如何运行的呢?那为了捕捉真实的逼真的消息,我们必须利用身边的工具,赤手空拳是无用的。
    上篇博客中,我们介绍了两种调试捕捉消息的工具,其实若是在Eclispe中开发WebService的话,直接通过Eclispe也可以看到消息传递的。
     Eclispe中,打开J2EE视图:
    首先,把服务运行起来:
    然后点击基于webservice的浏览器:
   
    选择wsdl页面:
   
  ws中两个方法:
 
    点击任何一个函数,如添加方法:
    点击source,以下是发送的和接受的消息:

通过我们捕捉soap消息,我们可以看出soap消息的组成部分。
    soap消息可以形象地比喻:soap消息是一个信封。信中有信头,信主体。其中写信,当然,可以没有心头了(所谓的称谓),信主题必须要有,否则写这封信就没有意义了。
    所以soap消息格式如下
    
        那代码格式的soap消息基本结构如下
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
  ...
  ...
</soap:Header>

<soap:Body>
  ...
  ...
  <soap:Fault>
    ...
    ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>
   
     
    其中,soap消息有一些注意的地方
  • SOAP 消息必须用 XML 来编码
  • SOAP 消息必须使用 SOAP Envelope 命名空间
  • SOAP 消息必须使用 SOAP Encoding 命名空间
  • SOAP 消息不能包含 DTD 引用
  • SOAP 消息不能包含 XML 处理指令
  
  通过观察传递的soap消息,我们可以发现,不仅仅是传递的消息,在消息上部还有http协议信息。
  发送的消息如下:在发送消息中,有发送的目的地Host ,传送的字节数Content-Length ,传送类型Content-type,字符编码charset
POST /ns HTTP/1.1
Content-type: text/xml;charset="utf-8"
Host: 127.0.0.1:8880
Connection: keep-alive
Content-Length: 240


  接受的消息如下:在接受消息中,有接受的状态比如成功200(HTTP/1.1 200 OK )http协议传输的编码格式Transfer-encoding,传输类型Content-type

HTTP/1.1 200 OK
Transfer-encoding: chunked
Content-type: text/xml;charset="utf-8"
  
   了解了Soap的格式规范,我们在编码时,会方便很多。用C++访问Java发布的webService时,就是使用的编写的Soap客户端,并且在Java服务器端,也是使用Soap形式发布服务的。
    在后期博客中,我们会使用编写Soap形式在进行发布或访问服务,所以现在我们花点时间来了解一下Soap,嘻嘻,现在苦点,以后就会甜点。

原文链接:http://blog.csdn.net/llhhyy1989/article/details/8224052
加载中
返回顶部
顶部