1

我试图在 Symfony 2 框架中使用 SOAP 实现 WebService。在服务器端我将类设置为我的服务器(setClass() 方法),因为我需要对类的一个实例进行更多操作。如果我将 setObject 用于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;
}

有人可以给我任何提示吗?

4

2 回答 2

1

最后它起作用了......我的命名空间不好,并且在 SOAP 服务器中需要在 setClass() 之后使用 setPersistence() 方法。

于 2013-03-28T11:06:16.167 回答
1

如果要使用 SoapServer::setClass,则必须声明服务构造函数的每个参数,并使用完整的命名空间字符串声明类名:

$server->setClass('Acme\YourBundle\SoapManager', $arg0, $arg1, $arg2 /*, ... */);
于 2013-03-27T13:34:02.940 回答