这个文档描述了如何取得和安装 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 方法,希望代码中的注释能够提供有效的说明。
<?php // Pull in the NuSOAP code require_once(''nusoap.php''); // Create the server instance $server = new soap_server; // Register the method to expose $server->register(''hello''); // Define the method as a PHP function function hello($name) { return ''Hello, '' . $name; } // Use the request to (try to) invoke the service $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''''; $server->service($HTTP_RAW_POST_DATA); ?>
以下是客户端的代码,有一些重要的事情需要注意:首先,当创建实例 soapclient 时,需要指定一个 service 的 URL 为参数,在这个实例中,helloworld.php 从 http://localhost/phphack 访问的。当然,你要使用的 services 放在不同的 URL;第二,当调用service 时,第一个参数是 service 的名字,必须要匹配有效的方法名(有的服务器是大小写敏感的)。在这个实例,他必须匹配在 helloworld.php 中已经注册了的方法。最后,第二个参数是一个数组,它将是传递给 SOAP service 方法作为参数。既然 helloworld.php 中的方法 hello 只有一个参数,那么数组就只有一个元素。
<?php // Pull in the NuSOAP code require_once(''nusoap.php''); // Create the client instance $client = new soapclient(''http://localhost/phphack/helloworld.php''); // Call the SOAP method $result = $client->call(''hello'', array(''name'' => ''Scott'')); // Display the result print_r($result); ?>
Debugging 编程时,当有问题出现的时候你都需要调试。NuSOAP 提供了一组工具来帮助你做这个工作。NuSOAP 调试的时候需要查看的信息是发送的请求信息和返回的相应信息。NuSOAP 的客户端类允许你通过它的两个成员来查看这些信息。例如,这里是显示请求和响应的 helloworldclient.php 的修改版。在下一部分我会回顾显示在客户端代码的请求和响应信息。
<?php // Pull in the NuSOAP code require_once(''nusoap.php''); // Create the client instance $client = new soapclient(''http://localhost/phphack/helloworld.php''); // Call the SOAP method $result = $client->call(''hello'', array(''name'' => ''Scott'')); // Display the result print_r($result); // Display the request and response echo ''<h2>Request</h2>''; echo ''<pre>'' . htmlspecialchars($client->request, ENT_QUOTES) . ''</pre>''; echo ''<h2>Response</h2>''; echo ''<pre>'' . htmlspecialchars($client->response, ENT_QUOTES) . ''</pre>''; ?>
NuSOAP 也提供了一个方法使用它的类 |