Web service入门3:SOAP知识

说明
xmlns是web.xml文件用到的命名空间
xmlns:xsi是指web.xml遵守xml规范(一般是W3C规范)
XSD是指XML结构定义(一般是自定义的XML结构)

1.SOAP是什么:Simple Object Access Protoco (简单对象访问协议),一个基于XML的简单通信协议。

2.SOAP = HTTP + XML
SOAP请求可能是HTTP POST 或 HTTP GET请求
HTTP POST请求规定至少两个HTTP头:Content—Type 和 Content-Length

例子:
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250

3.语法规则
SOAP 消息必须用 XML 来编码;
SOAP 消息必须使用 SOAP Envelope 命名空间;
SOAP 消息必须使用 SOAP Encoding 命名空间;
SOAP 消息不能包含 DTD 引用;
SOAP 消息不能包含 XML 处理指令;

4.SOAP的错误信息
SOAP 的 Fault 元素用于下列子元素
:供识别故障的代码
:可供人阅读的有关故障的说明
:有关是谁引发故障的信息
:存留涉及 Body 元素的应用程序专用错误信息

//这篇文章说的很清楚
http://www.360doc.com/content/17/0103/19/32641359_619821541.shtml

5.不同的版本使用不同的空间
SOAP1.2使用http://www.w3.org/2003/05/soap-envelope
对于命名空间和SOAP1.1使用http://schemas.xmlsoap.org/soap/envelope/。

案例:
SOAP 请求:

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml;charset=utf-8
Content-Length: nnn

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body  xmlns:m="http://www.example.org/stock">
	<m:GetStockPrice>
	        <m:StockName>IBM</m:StockName>
	 </m:GetStockPrice>
</soap:Body>
</soap:Envelope>

SOAP响应:

HTTP/1.1 200 OK
Content-Type: application/soap+xml;charset=utf-8
Content-Length: nnn

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Bodyxmlns:m="http://www.example.org/stock">
	<m:GetStockPriceResponse>	
		<m:Price>34.5</m:Price>
	</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>

======================================

Content-Type 对应的值,其实就是 MIME。有非常多的值,这个我们还可以在 Tomcat、Nginx 等当中进行配置。

不同场景的 Content-Type 的值如下:

application/x-www-form-urlencoded:默认的 encType,当 form 表单请求为 get 时,数据被编码为 key/value 格式(name1=value1&name2=value2…),然后把这个字串 append 到 url 后面,用 ? 分割,加载这个新的 url 发送到服务器(表单默认的提交数据的格式);当请求为 post 时,浏览器把 form 数据封装到 http body 中,然后发送到 server。(form 的 enctype 属性为编码方式,常用有两种:application/x-www-form-urlencoded 和 multipart/form-data,默认为 application/x-www-form-urlencoded。)
multipart/form-data:需要在表单中进行文件上传时,就需要使用该格式
application/json:application/json 这个 Content-Type 作为响应头大家肯定不陌生。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串
text/xml:它是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范
application/xhtml+xml:XHTML格式
application/xml:XML数据格式
application/atom+xml:Atom XML聚合格式
application/json:JSON数据格式
application/pdf:pdf格式
application/msword:Word文档格式
application/octet-stream:二进制流数据(如常见的文件下载)
text/html:HTML格式
text/plain:纯文本格式
image/gif:gif图片格式
image/jpeg:jpg图片格式
image/png:png图片格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值