发布于 2014-11-17 11:02:44 | 197 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

NuSoap php环境WebService编程工具

NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService。它是一个开源软件,是完全采用PHP语言编写的、通过 HTTP收发SOAP消息的一系列PHP类。NuSOAP的一个优势是不需要扩展库的支持,这种特性使得NuSoap可以用于所有的PHP环境,不受服务 器安全设置的影响。


本文是一篇Nusoap 入门学习笔记及应用示例讲解,nusoap是php下的WebService工具,感兴趣的同学参考下。

NuSOAP 是 PHP 环境下的 WEB 服务编程工具,用于创建或调用 WEB 服务,是php实现webservices的一个重要组成部分,我希望跟大家一起学习。

NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService。它是一个开源软件,是完全采用PHP语言编写的、通过 HTTP收发SOAP消息的一系列PHP类。NuSOAP的一个优势是不需要扩展库的支持,这种特性使得NuSoap可以用于所有的PHP环境,不受服务 器安全设置的影响。

1.Hello World 的实现

hello world是应用最广泛的入门程序之一,先建服务端,代码如下:

<?  
require_once("lib/nusoap.php");  
 
function HelloWorld()  
{  
    return 'Hello,world';  
}  
 
$server = new soap_server;  
$server->register('HelloWorld');  
$server->service($HTTP_RAW_POST_DATA);  
 
?>

HelloWorld()函数是一个服务程序,实际上就是返回一个"Hello,World!"的字符串;

$server 是一个服务对象,它是soap_server的一个实例;

register方法是注册被客户端访问的程序,参数是函数名称不带括号,函数的参数是作为register方法身的参数调用,下面有演示;

service是处理输入的数据,调用相对应的程序,返回给客户端。

综上,一个服务端的程序好了,下来就是客户端,代码如下:

<?  
require_once("lib/nusoap.php");  
 
$client = new soapclient('http://localhost/nusoap/server.php');  
 
$string = $client->call('HelloWorld');  
if(!$err = $client->getError()){  
    echo "The program return:".htmlentities($string,ENT_QUOTES);  
}  
else  
    echo "ERR:".htmlentities($err,ENT_QUOTES);  
 
?>

$client 是一个soapclient的实例,地址用的是url不是相对地址;

call是调用web服务的程序,调用方式跟服务端的register方法基本一样;

getError检查掉用过程是否出错,没有错,返回的false,出错,返回出错信息。

在浏览器访问http://localhost/nusoap/client.php

得到输出的结果:Hello,World!

2.带参数和返回错误信息

服务端的程序代码如下:

<?  
require_once("lib/nusoap.php");  
 
function strings($string1,$string2)  
{  
    if(is_string($string1)&&is_string($string2))  
        return "two strings:".$string1." and ".$string2;  
          
    else  
        return new soap_fault('Client','','two string required!');  
}  
 
$server = new soap_server;  
$server->register('strings');  
$server->service($HTTP_RAW_POST_DATA);  
 
?>

code ,必填参数 , 建议值为“ Client ”或“ Server ”,指明错误是客户端的错误还是服务端的错误。 

faultactor ,预留项,现在还没有使用 

faultstring ,错误的描述信息 

faultdetail ,可选项, XML 格式的数据 , 说明详细的错误信息

客户端代码如下:

<?  
require_once("lib/nusoap.php");  
 
$client = new soapclient('http://localhost/nusoap/server1.php?',);  
$parameters = array('Hello','world');  
 
$string = $client->call('strings',$parameters);  
 
if(!$err = $client->getError())  
{  
        echo "The server return:".$string;  
}  
else  
    echo "ERROR:".$err;  
 
?>

注意的是call的参数调用

3.创建支持wsdl的服务

服务端代码如下:

<?  
require_once("lib/nusoap.php");  
 
function strings($string1,$string2)  
{  
    if(is_string($string1)&&is_string($string2))  
        return "two strings:".$string1." and ".$string2;  
          
    else  
        return new soap_fault('Client','','two string required!');  
}  
 
$server = new soap_server;  
$server->configureWSDL('strings');  
$server->register('strings',array("string1"=>"xsd:string",  
"string2"=>"xsd:string"),array("return"=>"xsd:string"));  
 
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)? $HTTP_RAW_POST_DATA:'';  
 
$server->service($HTTP_RAW_POST_DATA);  
 
?>

注意的是register的参数

大家可以通过http://localhost/nusoap/server1.php?wsdl  查看wsdl的内容

客户端代码如下:

<?  
require_once("lib/nusoap.php");  
 
$client = new soapclient('http://localhost/nusoap/server1.php?wsdl',true);  
$parameters = array('Hello','world');  
 
$string = $client->call('strings',$parameters);  
 
if(!$err = $client->getError())  
{  
        echo "The server return:".$string;  
}  
else  
    echo "ERROR:".$err;  
      
echo '<p/>';  
echo 'Request:';  
echo '<pre>',htmlspecialchars($client->request,ENT_QUOTES),'</pre>';  
echo 'Response:';  
echo '<pre>',htmlspecialchars($client->response,ENT_QUOTES ),'</pre>';  
 
?>

为了方便调试我加入了request和response来显示运行信息。在服务端加入$debug=1再在客户端加上

echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';即显示调试内容。



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务