2009-06-23 37 views
2

我正在測試我的web空間上的服務器和客戶機。使用Zend框架的SOAP服務器和客戶機(正在出現錯誤)

當我嘗試調用一個ServerMap類中定義一個簡單的「TESTSERVER」功能,我得到 「看起來我們有沒有XML文檔」

..?

我在客戶端調用了getFunctions,testServer是一個有效的函數。我嘗試捕獲所有異常,然後調用__getLastResponseHeaders()和__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> 

所以怎麼回事?我在網上搜索,我沒有找到任何可靠的解決方案。 我沒有空白空間在我之前..

回答

0

如果您輸出到瀏覽器,它隱藏xml因爲它在一個。瀏覽器會忽略它們不會下標的標籤。

做一個echo htmlentities($ output);看到xml標籤。

+0

這可能是真的,但我的問題仍然有效,我不要」不要從我的服務器上取回我想要的東西。我打印到瀏覽器的所有內容都來自__getLastResponse()等 – Roman 2009-06-23 20:08:19

0

不知道你的問題是什麼,但我可以提供一些代碼,我知道我們使用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); 
    } 
}