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).
更完整?怎么会这样?
SOAP是一种更加定义和类型化的传输协议,但它很复杂,因为它只是发送数据.WSDL对我来说是一个不必要的复杂层.它只是用来告诉客户端和服务器数据是什么类型,但是PHP并没有给出类型,所以为什么要使用它呢?
REST和JSON =快速简便的
SOAP和XML =更慢,更难看