【问题标题】:Return response XML from SoapClient?从 SoapClient 返回响应 XML?
【发布时间】:2011-11-17 07:38:42
【问题描述】:

我创建了一个 web 服务,它返回一个数组作为响应,我的 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……我该怎么做呢?

【问题讨论】:

    标签: php xml web-services soap


    【解决方案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();
    
        }
    }
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-08
        • 2018-02-12
        • 1970-01-01
        • 2018-07-16
        • 2019-04-10
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多