我正在使用Zend_Soap_Client来调用Web服务。我从错误中得到一个例外,我怀疑这是因为我没有随请求发送一些内容:
致命错误:未捕获的SoapFault异常:[发件人] SOAP-ERROR: 编码:对象没有'V24Flag'属性
因为它抛出异常我想尝试查看发送的实际请求是什么,但是由于异常,我不能使用Zend_Soap_Client-> getLastRequest()来获取请求(它返回null)。看看Zend_Soap_Client-> getLastRequest()它是soapClient-> __ soapCall()的一个薄包装器,我不知道如何深入挖掘。
答案 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();