ThinkPHP中怎么调用nusoap?

浏览:4777 发布日期:2014/05/17 分类:求助交流 关键字: nusoap webservice
项目中需要使用webservice,我们选了nusoap,但是一直无法将这两者结合起来用,求大神帮助。
服务器端:<?php
class ServerAction extends Action {
    
    public function _initialize() {
        Vendor('Ns.nusoap');
        
        // 初始化服务对象 , 这个对象是类 soap_server 的一个实例
        $soap = new soap_server ();
        
        // 调用服务对象的 register 方法注册需要被客户端访问的程序。
        // 只有注册过的程序,才能被远程客户端访问到。
        $soap->register ( 'hello' );
        
        // 最后一步,把客户端通过 post 方式提交的数据,传递给服务对象的 service 方法。
        // service 方法处理输入的数据,调用相应的函数或方法,并且生成正确的反馈,传回给客户端。
        $soap->service ( $HTTP_RAW_POST_DATA );
    }
    
    
    // 定义服务程序
    function hello() {
        return 'Hello World!';
    }
    
    
}
?> 
客户端:<?php
class ClientAction extends Action {
    public function test() {
        Vendor('Ns.nusoap');
        
        // 初始化客户端对象,这个对象是类 soapclient 的一个实例,
        // 把服务程序的 URL 地址传递给soapclient类的构造函数。
        $client = new soapclient ( 'http://127.0.0.1/nusoap/Server/' );
        
        // 利用客户端对象的 call 方法调用 WEB 服务的程序
        $str = $client->call ( 'hello' );
        
        // 客户端对象的 getError() 方法可以用来检查调用过程是否出现错误。
        // 如果没有错误, getError() 方法返回 false ;如果有错误, getError()方法返回错误信息。
        if (! $err = $client->getError ()) {
            echo " 程序返回 :", htmlentities ( $str, ENT_QUOTES );
        } else {
            echo " 错误 :", htmlentities ( $err, ENT_QUOTES );
        }
    }
}
?> 
nusoap类库放在ThinkPHP/Extend/Vendor/Ns/下面。
运行客户端报错:错误 :xml error parsing SOAP payload on line 1: Reserved xml Name
如果将服务器端代码直接写成一个php文件,不用ThinkPHP就没有问题,如下:<?php
        require_once ("../../ns/nusoap.php");
        // 初始化服务对象 , 这个对象是类 soap_server 的一个实例
        $soap = new soap_server ();
        
        // 调用服务对象的 register 方法注册需要被客户端访问的程序。
        // 只有注册过的程序,才能被远程客户端访问到。
        $soap->register ( 'hello' );
        
        // 最后一步,把客户端通过 post 方式提交的数据,传递给服务对象的 service 方法。
        // service 方法处理输入的数据,调用相应的函数或方法,并且生成正确的反馈,传回给客户端。
        $soap->service ( $HTTP_RAW_POST_DATA );
    
    // 定义服务程序
    function hello() {
        return 'Hello World!';
    }
?> 
最佳答案
评论( 相关
后面还有条评论,点击查看>>