2011-09-14 214 views
0

我創建了一個響應返回數組中的web服務,我的web服務是與Zend建立在我的控制器我這樣做:從SoapClient返回響應XML?

$soap = new Zend_Soap_Server("http://blabla/wsdl"); 
$soap->setClass('Foo'); 
$soap->handle(); 
exit; 

這是Foo類與功能我打電話:

class Foo { 
    /** 
    * Test general 
    * @param Int $param 
    * @return Array 
    */ 
    public function general($param) { 
     return array('a' => 'b'); 
    } 
} 

我把它用:

$options = array(
    "trace" => 1, 
    "exceptions" => 0, 
    "cache_wsdl" => 0 
); 
$soap = new SoapClient('http://blabla/wsdl', $options); 
print_r('<pre>');print_r($soap->general(6)); 
exit; 

不過,我不希望它返回一個數組,而是一個XML ...我怎麼能這樣做呢?

回答

-1

這裏有一個類似的問題:How to convert array to SimpleXML

class Foo { 
    /** 
    * Test general 
    * @param Int $param 
    * @return Array 
    */ 
    public function general($param) { 
     //return array('a' => 'b'); 
     $xml = new SimpleXMLElement('<root/>'); 
     $a = array('a' => 'b'); 
     array_walk($a, array($xml,'addChild')); 
     return $xml->asXML(); 

    } 
} 
3

要檢索的最後一個響應XML作爲一個字符串,調用SoapClient::__getLastResponse()

$response = $soap->general(6); 
$response_xml = $soap->__getLastResponse(); 

這要求開啓trace選項,您已經在執行此操作。