利用NuSoap开发WebService(PHP)
发布时间:2020-12-16 23:52:54 所属栏目:安全 来源:网络整理
导读:NuSoap 是 PHP 环境下的 WebService 编程工具,用于创建或调用 ,是一个开源软件。它完全采用 语言编写、通过 HTTP 收发 SOAP 消息的一系列 类,由 NuSphere Corporation( http://www.nusphere.com/ ) 开发。 它的 优势 是不需要扩展库的支持,这种特性使它
NuSoap
是
PHP
环境下的
WebService
编程工具,用于创建或调用
,是一个开源软件。它完全采用
语言编写、通过
HTTP
收发
SOAP
消息的一系列
类,由
NuSphere Corporation(http://www.nusphere.com/)
开发。
它的优势是不需要扩展库的支持,这种特性使它可用于所有的 环境,不受服务器安全设置的影响。 1. 首先,去 http://sourceforge.net/projects/nusoap/ 下载 nusoap-0.9.5.zip ,解压后把 lib 文件夹放到与你的 程序相同的目录,如 /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 =?$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 文件的地址 ( 问号后的 不能为大写 ) ??????? 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( $paras ); ???? 检查错误,获取返回值 ???? if? (! $err = $client ->getError()) {? echo? " 返回结果: " ,0); font-size:10pt">$result ;??} ???? else? {? echo? 调用出错: $err ; } ?> 注: 用 nusoap 实现 WebService, 不要开启 php 的 SOAP 扩展 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |