带有CodeIgniter的SOAP服务器

Luc*_*ano 1 php soap codeigniter

我正在扩展一个用CI编写的webapp,以便与visual basic应用程序进行通信.

首先,我想知道我选择的解决方案是否是一个不错的选择......我之前曾在xml-rpc上工作并将手放在REST服务中,但对我来说SOAP解决方案看起来更完整.我错了吗?

无论如何,到目前为止的问题是我无法在我的控制器内调用函数...这是我的代码:

class Webservice extends CI_Controller {

    function  __construct() {
        parent::__construct();
    }

    public function index() {
        $server = new SoapServer("http://www.site.com/test.wsdl");
        $server->setObject($this);
        //$server->addFunction('sayHello');
        $server->handle();
    }

    function sayHello($name) {
        $salute = "Hi " . $name . ", it's working!";
        return $salute;
    }

}
Run Code Online (Sandbox Code Playgroud)

我已经编译了wsdl文件,但在我调用site.com/webservice后,我收到以下错误:

SoapServer :: addFunction()[soapserver.addfunction]:试图添加一个不存在的函数'sayHello'

我也尝试将$ CI =&get_instance()传递给$ server-> setObject(),但我认为它与传递$ this相同.

更新 - 12/09/2011

我想通了......如果已经设置了整个对象$ this,则无需使用addFunction().SOAP将只调用wsdl文件中声明的函数,无论如何,我似乎无法将函数设置为privete/protected.

说过我不确定要继续使用SOAP ... Phil Sturgeon编写教程使用REST方法显示了一个很好的解决方案,返回不同的响应类型(json,xml,serialize,csv).

Phi*_*eon 6

更完整?怎么会这样?

SOAP是一种更加定义和类型化的传输协议,但它很复杂,因为它只是发送数据.WSDL对我来说是一个不必要的复杂层.它只是用来告诉客户端和服务器数据是什么类型,但是PHP并没有给出类型,所以为什么要使用它呢?

REST和JSON =快速简便的
SOAP和XML =更慢,更难看