这个文档描述了如何取得和安装 nusoap,然后提供一些实例来说明 nusoap 的功能,这并不是一个全面的 nusoap 的介绍,但是希望能够然一些 php 开发者可以有一个很好的入门。
nusoap 是一组 php 类,它让开发者可以创建和使用 soap web services。它不需要安装任何的 php 扩展。它是在2004年12月3日被开发,当前的版本是 nusoap(0.6.7) 。支持 soap 1.1 规范,它能够生产 wsdl 1.1 ,当然也可以使用它,同时也支持 rpc/encoded and document/literal service。但是,必须注意 nusoap 没有像 .net 和 apache axis 那样提供完全的实现。
hello, world我会以 “hello, world” 为实例做开始,编写基本的 nusoap 客户端和服务器端的代码。
我们先从服务器端开始,应为没有服务器端,有客户端也是没有意义的。我们将编写一个带有单个参数并返回一个字符串,名叫 hello 的 soap 方法,希望代码中的注释能够提供有效的说明。
以下是客户端的代码,有一些重要的事情需要注意:首先,当创建实例 soapclient 时,需要指定一个 service 的 url 为参数,在这个实例中,helloworld.php 从 http://localhost/phphack 访问的。当然,你要使用的 services 放在不同的 url;第二,当调用service 时,第一个参数是 service 的名字,必须要匹配有效的方法名(有的服务器是大小写敏感的)。在这个实例,他必须匹配在 helloworld.php 中已经注册了的方法。最后,第二个参数是一个数组,它将是传递给 soap service 方法作为参数。既然 helloworld.php 中的方法 hello 只有一个参数,那么数组就只有一个元素。
debugging编程时,当有问题出现的时候你都需要调试。nusoap 提供了一组工具来帮助你做这个工作。nusoap 调试的时候需要查看的信息是发送的请求信息和返回的相应信息。nusoap 的客户端类允许你通过它的两个成员来查看这些信息。例如,这里是显示请求和响应的 helloworldclient.php 的修改版。在下一部分我会回顾显示在客户端代码的请求和响应信息。
nusoap 也提供了一个方法使用它的类就可以通过日志来查看调试信息。加入以下的代码将会显示冗长的调试信息。不幸的是输出的说明必须留给读者。
// display the debug messagesecho debug;echo . htmlspecialchars($client->debug_str, ent_quotes) . ;
服务器端能够提供相似的调试信息,有趣的是,这些调试信息是在soap 的相应的末尾以 xml 格式显示,因此它可以在客户端中查看到。服务器端的调试看起来像这样:
调试的第三个方法不算是真正的调试,它是很好的编程实践。上面的实例在调用 soap 的时候没有做错误的检查,更健壮的客户端会像这样:
为了测试代码,需要引起错误发生,例如,改变调用的方法名称 hello 为 goodbye。
request and response我在上面的例子中已经展示了显示 soap 的请求和响应信息是如此的容易,在这里 hello2client.php 的请求信息:
post /phphack/helloworld2.php http/1.0host: localhostuser-agent: nusoap/0.6.8 (1.81)content-type: text/xml; charset=iso-8859-1soapaction: “”content-length: 538
scott 在 http headers 里,你会看到 soapaction 是一个空的字符串,这是它的默认值。你的 service 方法可以设置 soapaction 的值,你的客户端代码可以指定 soapaction 作为参数来调用方法。
在 xml payload,你可以看到 nusoap 使用和latin-1一样著名的 iso-8859-1 做为编码,为了指定不同的编码,你可以在客户端 soapclient 的实例设置 soap_defencoding 属性。使用指定的编码来编码参数的数据当然就是程序员的责任。幸运地,在 soap 里php提供了很多函数来编码和解码最通用的编码数据,如 utf-8。
另一件事情要注意的是,元素指定要调用的方法,名称为 hello 的元素被放在 http://tempuri.org的域名下,指定真实的域名是最佳的实践,对于很多 services 也是很有必要的。这里展示了一个未来的文档:
soap 服务的响应像以下:
http/1.1 200 okserver: microsoft-iis/5.0date: wed, 03 nov 2004 21:32:34 gmtx-powere
http://www.bkjia.com/phpjc/508345.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/508345.htmltecharticle这个文档描述了如何取得和安装 nusoap,然后提供一些实例来说明 nusoap 的功能,这并不是一个全面的 nusoap 的介绍,但是希望能够然一些…