快速业务通道

NuSOAP教程

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-26

这个文档描述了如何取得和安装 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 也提供了一个方法使用它的类

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号