Я расширяю веб-приложение, написанное на CI, для взаимодействия с 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.
ОБНОВЛЕНИЕ - 12.09.2011
Я понял это ... нет необходимости использовать addFunction (), если уже установлен весь объект $ this. SOAP будет вызывать только функции, объявленные в файле wsdl, в любом случае кажется, что я не смог установить функцию как privete / protected.
Сказав, что я не уверен, что буду продолжать работу с SOAP ... учебное пособие , написанное Филом Стерджоном , демонстрирует хорошее решение с использованием подхода REST, которое возвращает разные типы ответов (json, xml, serialize, CSV).