1

Symfony 2 フレームワークで SOAP を使用して WebService を実装しようとしています。サーバー側では、クラスをサーバーに設定します(setClass()メソッド)。クラスの1つのインスタンスでさらに操作を行う必要があるためです。soapCalls に setObject を使用した場合、うまく機能します。

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 に答える