【发布时间】:2011-09-12 11:35:38
【问题描述】:
我正在扩展一个用 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;
}
}
我已经编译了 wsdl 文件,但是在我调用 site.com/webservice 之后,我得到了以下错误:
SoapServer::addFunction() [soapserver.addfunction]: 试图添加一个不存在的函数 'sayHello'
我也尝试过将 $CI=& get_instance() 传递给 $server->setObject(),但我认为它与传递 $this 相同。
更新 - 2011 年 9 月 12 日
我想通了...如果已经设置了整个对象 $this,则无需使用 addFunction()。 SOAP 将仅调用 wsdl 文件中声明的函数,无论如何我似乎无法将函数设置为私有/受保护。
话虽如此,我不确定是否继续使用 SOAP...tutorial written by Phil Sturgeon 展示了使用 REST 方法返回不同响应类型(json、xml、序列化、csv)的良好解决方案。
【问题讨论】:
标签: php codeigniter soap