.net写的后台: iOS使用SOAP请求Webservice

SOAP是一个简单对象访问协议,它可看成HTTP与XML的结合,其中XML部分是作为HTTP报文的实体主体部分。

在iOS中使用SOAP,需要我们自己组装XML格式的字符串,当XML字符串比较长的时候回变得很麻烦。另外,我们在写XML格式的字符串时也要经常使用转义字符“\”

什么是WebService  从表面看 Webservice就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API.这就是说,你能够用变成的方法通过web来调用这个应用程序。

1、WebService都是放在Web服务器后面的,客户生成的SOAP请求会标嵌入在一个HTTP POST请求中发送到Web服务器来。

2、Web服务器再把这些请求转发给Web service请求处理器,这些请求处理器的作用在于,解析收到的soap请求,调用Web service,然后再生成相应的SOAP应答。

3、Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。

目前WebService的协议主要有SOAP1.0、SOAP1.1、SOAP1.2.SOAP协议的版本会影响请求是否成功。

HTTP在TCP/IP上通信。HTTP客户机使用TCP连接到HTTP服务器,在建立连接之后,客户机可向服务器发送HTTP请求消息。SOAP中HTTP请求消息:

POST /appserver/UserService.asmx HTTP/1.1     说明了SOAP请求方式是 HTTP POST请求

Host: 192.168.3.93     说明主机地址是:192.168.3.93    ,我们的接口地址是:http://192.168.3.93/appserver/UserService.asmx

Content-Type: application/soap+xml; charset=utf-8    说明了消息的MIME类型,以及用于请求或响应的XML主体的字符编码(可选)

Content-Length:length    SOAP请求或响应主体的字节数

随后,服务器会处理此请求,然后向客户端发送一个HTTP响应,此响应包括

200 OK

Content-Type: text/plain

Content-Length: 200

在上面的例子中,服务器返回了一个 200 的状态代码。这是 HTTP 的标准成功代码。

假如服务器无法对请求进行解码,它可能会返回类似这样的信息:

400 Bad Request

Content-Length: 0

一条SOAP消息就是一个普通的XML文档,包括下列元素:

Envelope元素      必需     标识XML文档是一条SOAP消息

Header元素         可选     包含头部信息

Body元素            必需     包含所有调用和响应信息

Fault元素             可选     提供有关在处理此消息时所发生的错误信息

SOAP方法是指SOAP编码规则的HTTP请求/响应。

HTTP + XML = SOAP

.net写的后台: iOS使用SOAP请求Webservice_第1张图片

题目:准备传入的参数,使用城市编码和签证类型,查询签证须知

.net写的后台: iOS使用SOAP请求Webservice_第2张图片
soap.png
.net写的后台: iOS使用SOAP请求Webservice_第3张图片
soap2.png

下面是一个soap请求

.net写的后台: iOS使用SOAP请求Webservice_第4张图片
可以看到,一个SOAP请求其实就是一个HTTP请求,但为了表明内容是SOAP的数据,需要加入上面请求中红色字的部分来以示区别。也就是说,如果请求头中有SOAPAction这一段,那么请求会被当作SOAP的内容来处理而不会当作HTML来解析。可以用上面指定SOAPAction头来表示内容是SOAP的内容,也可以指定 Content-Type: application/soap+xml来表示内容是SOAP的内容。SOAP请求中最后的那段XML数据,这个就是请求的具体内容,这个就是SOAP规定的请求的数据格式。

本文参考以下文章:

SOAP web service用AFNetWorking实现请求 - 西北风的专栏 - 博客频道 - CSDN.NET

ios XML

ios webservice+soap编程 - fs的专栏 - 博客频道 - CSDN.NET

ios webservice编程:soap封装调用,返回xml

你可能感兴趣的:(.net写的后台: iOS使用SOAP请求Webservice)