2011-09-14 255 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选项,您已经在执行此操作。