function concatenate($str1,$str2) {
if (is_string($str1) && is_string($str2))
return $str1 . $str2;
else
return new soap_fault(‘ 客户端 ‘,”,'concatenate 函数的参数应该是两个字符串 ‘);
}
$debug=1; //定义调试
$soap = new soap_server;
$soap->register(‘concatenate');
$soap->service($HTTP_RAW_POST_DATA);
?>
2.4 对 WSDL 的支持
NuSOAP 内部通过类 “WSDL” 实现对 WSDL 的支持。对于 NuSOAP 的用户来说,不需要关心内部的WSDL类是如何工作的,正确地使用 soap_server 类和 soapclient 类就可以实现对 WSDL 的支持。
2.4.1 创建支持 WSDL 的 WEB 服务
为了实现 WEB 服务程序对 WSDL 的支持,需要使用 soap_server 的 configureWSDL 方法,并且在调用 soap_server 的 register 方法注册 WEB 服务程序时,需要提供更详细的参数。看下面的代码,代码的文件名是 “/nusoap/nusoap_server3.php”。
<?php
require_once(“lib/nusoap.php”);
function concatenate($str1,$str2) {
if (is_string($str1) && is_string($str2))
return $str1 . $str2;
else
return new soap_fault(‘ 客户端 ‘,”,'concatenate 函数的参数应该是两个字符串 ‘);
}
$soap = new soap_server;
$soap->configureWSDL(‘concatenate'); // 初始化对 WSDL 的支持
// 注册服务
$soap->register(‘concatenate',
array(“str1″=>”xsd:string”,”str2″=>”xsd:string”), // 输入参数的定义
array(“return”=>”xsd:string”) // 返回参数的定义
);
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ”;
$soap->service($HTTP_RAW_POST_DATA);
?>
现在打开浏览器,访问刚才建立的文件,http://127.0.0.1/nusoap/nusoap_server3.php,结果如下:
concatenate
View the WSDL for the service. Click on an operation name to view it's details.
concatenate
点击函数名称concatenate,可以看到对函数的描述。点击”WSDL”,或者访问WEB服务文件,并在后面加上查询字符串”?wsdl”(http://127.0.0.1/nusoap/nusoap_server3.php?wsdl),可以得到WEB服务的WSDL内容。
2.4.2 通过 WSDL 调用 WEB 服务
通过 WSDL 调用 WEB 服务,与不通过 WSDL 调用 WEB 服务,程序的结构大体相同。区别在于,通过 WSDL 调用 WEB 服务,初始化 soapclient 类时,传入两个参数到 soapclient 的构造函数,第一个参数是 WSDL 文件的地址,第二个参数指定是否使用 WSDL ,指定为 true 即可。看下面的代码,代码的文件名是 “ /nusoap/nusoap_client3.php ”
<?php
require_once(“lib/nusoap.php”);
$client = new soapclient(‘http://127.0.0.1/nusoap/nusoap_server3.php?wsdl',true);
$parameters=array(‘ 字符串 1′,' 字符串 2′);
$str=$client->call(‘concatenate',$parameters);
if (!$err=$client->getError()) {
echo ” 程序返回 :”,$str;







