从SoapClient返回响应XML


Return response XML from SoapClient?

我创建了一个webservice,在响应中返回一个数组,我的webservice是用Zend在我的控制器中构建的,我这样做:

$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…我怎么能这么做呢?

要检索最后一个响应XML作为字符串,调用SoapClient::__getLastResponse()

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

这需要打开trace选项,您已经这样做了。

这里有一个类似的问题:如何将数组转换为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();
    }
}