从SoapClient返回响应XML?

时间:2011-09-14 19:21:00

标签: php xml web-services soap

我创建了一个webservice,它返回一个响应的数组,我的web服务是在我的控制器中用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 ......我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

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

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

这需要启用trace选项,您已经在执行此操作。

答案 1 :(得分:-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();

    }
}