肥皂反应错误(Yii网络服务)

时间:2013-02-15 12:51:48

标签: php web-services soap yii

任何人都可以帮我解决我的问题吗? 我正在尝试从我的Web服务获取数据,有时使用无效的XML来获取服务器响应。 我注意到它取决于数据大小。如果响应达到一定的大小,则会以</SOAP-ENV:Envelop而不是</SOAP-ENV:Envelope>结束。

这是我的示例代码:一个控制器中的客户端和服务器。 方法“成功”工作正常,但类似方法“失败”却没有。 更多:对于nginx和php-fpm“success”方法也失败了(对于apache与php_mod“success”方法有效)。

<?php

class SoapController extends CController
{
    public function actions()
    {
        return array('wsdl' => array('class' => 'CWebServiceAction'));
    }

    private function getData($size)
    {
        return array_fill(0, $size, '18ad96e6-5526-11e0-9c19-00248c654095');
    }

    /**
     * @return array
     * @soap
     */
    public function success()
    {
        return $this->getData(104);
    }

    /**
     * @return array
     * @soap
     */
    public function fail()
    {
        return $this->getData(105);
    }

    public function actionTest()
    {
        $client = new SoapClient($this->createAbsoluteUrl('wsdl'), array('trace' => true));

        $methods = array('success', 'fail');

        foreach ($methods as $method) {

            try {
                $result = call_user_func(array($client, $method));
                $result = count($result);
            } catch (SoapFault $ex) {
                $result = $ex->getMessage();
            }

            echo $method . ' result: ' . $result . '<br>';
            echo $method . ' response: <br>' . htmlspecialchars($client->__getLastResponse()) . '<br><br>';
        }
    }
}

软件版本:

  • Ubuntu Server 12.10
  • Yii 1.1.13
  • PHP 5.4.6
  • Apache 2.2.22
  • Nginx 1.2.1

1 个答案:

答案 0 :(得分:0)

问题出在控制器文件中。 它具有带BOM的UTF-8字符集 。删除BOM后,它工作正常。