我试图在Symfony 2框架中使用SOAP实现WebService。在服务器端我将类设置为我的服务器(setClass()方法)因为我需要在一个类实例上进行更多操作。 如果我使用setObject for soapCalls,它运作良好,
use path\to\Test;
public function indexAction()
{
$server = new \SoapServer(null, array('uri' => "http://test-uri.cz/"));
$server->setObject($this->get('my_service'));
$response = new Response();
$response->headers->set('Content-Type', 'text/xml');
ob_start();
$server->handle();
if (ob_get_length() > 0) {
$response->setContent(ob_get_clean());
}
return $response;
}
但不适用于setClass方法。
use path\to\Test;
public function indexAction()
{
$server = new \SoapServer(null, array('uri' => "http://test-uri.cz/"));
$server->setClass('Test');
$response = new Response();
$response->headers->set('Content-Type', 'text/xml');
ob_start();
$server->handle();
if (ob_get_length() > 0) {
$response->setContent(ob_get_clean());
}
return $response;
}
有人可以给我任何提示吗?
答案 0 :(得分:1)
如果要使用SoapServer :: setClass,则必须声明服务构造函数的每个参数,并使用完整的命名空间字符串声明类名:
$server->setClass('Acme\YourBundle\SoapManager', $arg0, $arg1, $arg2 /*, ... */);
答案 1 :(得分:1)
最后它的工作原理......我的命名空间不好,在SOAP服务器中需要在setClass()之后使用setPersistence()方法。