Zend framework 使用Zend framework的SOAP服务器和客户端(获取错误)

Zend framework 使用Zend framework的SOAP服务器和客户端(获取错误),zend-framework,soap,wsdl,web-services,Zend Framework,Soap,Wsdl,Web Services,我正在测试在我的Web空间上制作的服务器和客户端 当我尝试调用ServerMap类中定义的简单“testServer”函数时,我得到 “看来我们没有XML文档” 我在客户机上调用了getFunctions,testServer是一个有效的函数。我尝试捕获所有异常,然后调用uu getLastResponseHeaders()和u getLastResponse 标题: string(348) "HTTP/1.1 200 OK Date: Tue, 23 Jun 2009 19:36:29 GM

我正在测试在我的Web空间上制作的服务器和客户端

当我尝试调用ServerMap类中定义的简单“testServer”函数时,我得到 “看来我们没有XML文档”

我在客户机上调用了getFunctions,testServer是一个有效的函数。我尝试捕获所有异常,然后调用uu getLastResponseHeaders()和u getLastResponse

标题:

string(348) "HTTP/1.1 200 OK
Date: Tue, 23 Jun 2009 19:36:29 GMT
Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9
X-Powered-By: PHP/5.2.9
Cache-Control: max-age=1
Expires: Tue, 23 Jun 2009 19:36:30 GMT
Vary: Accept-Encoding
Content-Length: 1574
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
"
答复:

string(1574) "DEBUG HEADER : This is a cached page !

"
如果我查看响应的源html,它实际上是:

string(1574) "DEBUG HEADER : This is a cached page !<?xml version="1.0"?>
<A lot of xml that looks pretty much like my WSDL file that my Zend_Soap_AutoDiscover generates>
string(1574)“调试头:这是一个缓存页面!
那到底发生了什么?我在网上搜索,并没有真正找到任何固溶体。
我的..

前面没有空格。如果您要输出到浏览器,它会隐藏xml,因为它在a中。浏览器会忽略它们不理解的标记


执行echo htmlentities($output);以查看xml标记。

如果输出到浏览器,则会隐藏xml,因为它位于。浏览器会忽略他们不理解的标记


执行echo htmlentities($output);以查看xml标记。

不确定您的问题是什么,但我可以提供一些代码,我知道这些代码适用于我们使用Zend Framework 1.8x作为silverlight和WCF的后端SOAP服务。此服务简单地接受2个整数,添加它们并返回结果。尽可能简单

控制器类示例:

class SoapController extends Zend_Controller_Action  {

    /*
     * SOAP server action
     */
    public function indexAction() {

        $request = $this->getRequest();     
        if ($request->getParam('wsdl') !== null) {
            $wsdl = new Zend_Soap_AutoDiscover();
            $wsdl->setClass('SoapMath');
            $wsdl->handle();
        }
        else {  
            $module = $request->getModuleName();
            $controller = $request->getControllerName();
            $uri = 'http://' . Zend_Registry::get('fullUrl') . '/' . $module . '/' . $controller . '?wsdl';
            $server = new Zend_Soap_Server($uri);       
            $server->setClass('SoapMath');
            $server->handle();
        }
        exit;
    }
}
实际工作由“SoapMath”完成,其定义为:

class SoapMath {

    public function add($a,$b) {

        return ($a + $b);
    }
}

不确定您的问题是什么,但我可以提供一些代码,我知道这些代码适用于我们使用Zend Framework 1.8x作为silverlight和WCF的后端SOAP服务。此服务简单地接受2个整数,将它们相加并返回结果。尽可能简单

控制器类示例:

class SoapController extends Zend_Controller_Action  {

    /*
     * SOAP server action
     */
    public function indexAction() {

        $request = $this->getRequest();     
        if ($request->getParam('wsdl') !== null) {
            $wsdl = new Zend_Soap_AutoDiscover();
            $wsdl->setClass('SoapMath');
            $wsdl->handle();
        }
        else {  
            $module = $request->getModuleName();
            $controller = $request->getControllerName();
            $uri = 'http://' . Zend_Registry::get('fullUrl') . '/' . $module . '/' . $controller . '?wsdl';
            $server = new Zend_Soap_Server($uri);       
            $server->setClass('SoapMath');
            $server->handle();
        }
        exit;
    }
}
实际工作由“SoapMath”完成,其定义为:

class SoapMath {

    public function add($a,$b) {

        return ($a + $b);
    }
}

这可能是真的,但我的问题仍然是,我没有从我的服务器返回我想要的。我打印到浏览器的所有内容都是从u getLastResponse()获取的,这可能是真的,但我的问题仍然是,我没有从服务器返回我想要的内容。我打印到浏览器的所有内容都是从u getLastResponse()获取的