在soap故障异常后,如何查看Zend_Soap_Client-> getLastRequest()的最后一个请求?

时间:2011-11-24 10:35:11

标签: php zend-framework soap

我正在使用Zend_Soap_Client来调用Web服务。我从错误中得到一个例外,我怀疑这是因为我没有随请求发送一些内容:

  

致命错误:未捕获的SoapFault异常:[发件人] SOAP-ERROR:   编码:对象没有'V24Flag'属性

因为它抛出异常我想尝试查看发送的实际请求是什么,但是由于异常,我不能使用Zend_Soap_Client-> getLastRequest()来获取请求(它返回null)。看看Zend_Soap_Client-> getLastRequest()它是soapClient-> __ soapCall()的一个薄包装器,我不知道如何深入挖掘。

2 个答案:

答案 0 :(得分:1)

您的问题实际上与您的想法略有不同。 Zend_Soap_Client::getLastRequest()为您返回NULL的原因是没有提出任何请求:在将内部请求与您正在使用的WSDL进行比较的阶段抛出错误。因此,返回NULL

的方法非常正确

至于如何为你的SOAP调用形成参数,所以不会抛出这个错误,我现在无法提供更大的帮助(我希望它部分取决于你正在集成的服务),但是有the php.net page for SoapClient::__soapCall()上的用户态回答可能会指向您富有成效的方向。从本质上讲,有些人似乎已经通过将数组结构深度转换为stdClass个对象来获得某个地方。这似乎不是整个故事(它不是我正在调查的问题),事实上这可能是a bug in PHP,但我希望它可以帮助你找到答案。

答案 1 :(得分:-1)

怎么样

    try {
        $client = new Zend_Soap_CLient();
        $client->doSomething($params);

    } catch(SoapFault $f) {
        echo $f->getTraceAsString();
    }

顺便说一下。 Zend_Soap_Client-> getLastRequest()包装SoapClient :: __ getLastRequest();