php nusoap 创建和调用webservice
2015-08-14 16:55
621 查看
原文:http://blog.csdn.net/painstaker/article/details/5870515
NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService,是一个开源软件。它完全采用PHP语言编写、通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://www.nusphere.com/)开发。
它的优势是不需要扩展库的支持,这种特性使它可用于所有的PHP环境,不受服务器安全设置的影响。
1.首先,去http://sourceforge.net/projects/nusoap/下载nusoap-0.9.5.zip,解压后把lib文件夹放到与你的WebService程序相同的目录,如/WebService/lib。
2.服务端:建立nusoapService.php文件。
<?php
require_once("lib/nusoap.php");
$server =
new soap_server;
//避免乱码
$server->soap_defencoding =
'UTF-8';
$server->decode_utf8 =
false;
$server->xml_encoding =
'UTF-8';
$server->configureWSDL('sayHello');//打开wsdl支持
/*
注册需要被客户端访问的程序
类型对应值:bool->"xsd:boolean"
string->"xsd:string"
int->"xsd:int" float->"xsd:float"
*/
$server->register(
'sayHello',
//方法名
array("name"=>"xsd:string"),
//参数,默认为"xsd:string"
array("return"=>"xsd:string")
);//返回值,默认为"xsd:string"
//isset 检测变量是否设置
$HTTP_RAW_POST_DATA
= isset($HTTP_RAW_POST_DATA) ?
$HTTP_RAW_POST_DATA :
'';
//service
处理客户端输入的数据
$server->service($HTTP_RAW_POST_DATA);
/**
* 供调用的方法
* @param $name
*/
function sayHello($name) {
return
"Hello, {$name}!";
}
?>
注:
1.文件代码不能有任何输出,否则调用时会报类似如下错误:
XML error parsing SOAP payload on line x(行号): Reserved XML Name
2.要以UTF-8
无BOM格式保存,不然客户端调用会出错。
3.客户端:建立nusoapClient.php文件。
<?php
require_once("lib/nusoap.php");
/*
通过WSDL调用WebService
参数1 WSDL文件的地址(问号后的wsdl不能为大写)
参数2
指定是否使用WSDL
$client = new soapclient('http://localhost/WebService/nusoapService.php?wsdl',true);
*/
$client =
new soapclient('http://localhost/WebService/nusoapService.php');
$client->soap_defencoding =
'UTF-8';
$client->decode_utf8 =
false;
$client->xml_encoding =
'UTF-8';
//参数转为数组形式传递
$paras=array('name'=>'Bruce
Lee');
//目标方法没有参数时,可省略后面的参数
$result=$client->call('sayHello',$paras);
//检查错误,获取返回值
if (!$err=$client->getError())
{ echo "返回结果:",$result;
}
else
{ echo "调用出错:",$err;
}
?>
注:用nusoap实现WebService,不要开启php的SOAP扩展
NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService,是一个开源软件。它完全采用PHP语言编写、通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://www.nusphere.com/)开发。
它的优势是不需要扩展库的支持,这种特性使它可用于所有的PHP环境,不受服务器安全设置的影响。
1.首先,去http://sourceforge.net/projects/nusoap/下载nusoap-0.9.5.zip,解压后把lib文件夹放到与你的WebService程序相同的目录,如/WebService/lib。
2.服务端:建立nusoapService.php文件。
<?php
require_once("lib/nusoap.php");
$server =
new soap_server;
//避免乱码
$server->soap_defencoding =
'UTF-8';
$server->decode_utf8 =
false;
$server->xml_encoding =
'UTF-8';
$server->configureWSDL('sayHello');//打开wsdl支持
/*
注册需要被客户端访问的程序
类型对应值:bool->"xsd:boolean"
string->"xsd:string"
int->"xsd:int" float->"xsd:float"
*/
$server->register(
'sayHello',
//方法名
array("name"=>"xsd:string"),
//参数,默认为"xsd:string"
array("return"=>"xsd:string")
);//返回值,默认为"xsd:string"
//isset 检测变量是否设置
$HTTP_RAW_POST_DATA
= isset($HTTP_RAW_POST_DATA) ?
$HTTP_RAW_POST_DATA :
'';
//service
处理客户端输入的数据
$server->service($HTTP_RAW_POST_DATA);
/**
* 供调用的方法
* @param $name
*/
function sayHello($name) {
return
"Hello, {$name}!";
}
?>
注:
1.文件代码不能有任何输出,否则调用时会报类似如下错误:
XML error parsing SOAP payload on line x(行号): Reserved XML Name
2.要以UTF-8
无BOM格式保存,不然客户端调用会出错。
3.客户端:建立nusoapClient.php文件。
<?php
require_once("lib/nusoap.php");
/*
通过WSDL调用WebService
参数1 WSDL文件的地址(问号后的wsdl不能为大写)
参数2
指定是否使用WSDL
$client = new soapclient('http://localhost/WebService/nusoapService.php?wsdl',true);
*/
$client =
new soapclient('http://localhost/WebService/nusoapService.php');
$client->soap_defencoding =
'UTF-8';
$client->decode_utf8 =
false;
$client->xml_encoding =
'UTF-8';
//参数转为数组形式传递
$paras=array('name'=>'Bruce
Lee');
//目标方法没有参数时,可省略后面的参数
$result=$client->call('sayHello',$paras);
//检查错误,获取返回值
if (!$err=$client->getError())
{ echo "返回结果:",$result;
}
else
{ echo "调用出错:",$err;
}
?>
注:用nusoap实现WebService,不要开启php的SOAP扩展
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料