php支持两种Web服务模式,WSDL和non-WSDL,先介绍Web服务的实现模式:
Web服务主要有两种实现模式:契约先行模式(contract first),和代码先行模式(code first)
1.契约先行模式:
在其实现中,首先定义针对这个web服务接口的WSDL(也就是Web Service Description Language网页服务描述语言)文件,wsdl描述了web服务的位置,可提供的操作集,以及其他属性;wsdl文件也就是web服务的契约,契约订立之后再据此进行服务端和客户端的程序开发,这种模式对应wsdl模式;
wsdl文件包括5部分:
Types类型定义独立于语言,对应于SOAP消息中要传输元素信息的定义;
Message 每个web方法对应两个message定义in和out,而message的定义包含头和体;
PortType每个webservice对应一个PortType;
Bindings指定每个PortType中的绑定信息,包含input和output方式,
Service每个webservice绑定的port信息
2.代码先行模式:
第一步工作是实现web服务器端,根据服务器端的实现,用某种方法生成wsdl文件,但php本身并没有生成wsdl文件的方法,所以就要以non-WSDL模式连接服务器端,即不通过wsdl文件创建SoapServer和SoapClient示例,直接向构造函数传递必要的参数;