PHP SoapClient __getLastRequest和__getLastRequestHeaders为成功调用返回NULL

时间:2014-02-08 14:46:56

标签: php web-services soap

我正在阅读关于webservices和SOAP的教程。在了解这些内容时,我创建了一个php文件,以便对w3schools提供的WSDL进行操作,该文件将温度转换为摄氏温度和华氏温度。

我编写了以下成功触发的PHP代码:

$wsdl = "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL";
$soapClient = new SoapClient($wsdl);

// print_r ($soapClient->__getFunctions());
// print_r ($soapClient->__getTypes());

$parameters = array("Celsius" => "0");

$result = $soapClient->__soapCall("CelsiusToFahrenheit", array($parameters) );


echo "key: " . key($result) . "<br />" ;
echo "value: " . current($result) . "<br />" ;

浏览器成功返回以下内容:

key: CelsiusToFahrenheitResult
value: 32

然后我尝试使用SoapClient方法__getLastRequest()__getLastRequestHeaders()来查看已发送的标头,看看它们与我读过的内容的比较以及两个方法调用返回null < / p>

echo "Last call headers: <br />";
echo $soapClient->__getLastRequestHeaders();
echo "<br />" ;
echo "Last call headers: <br />";
echo $soapClient->__getLastRequest();

我查看了php manual for _getLastRequestHeaders()中的注释和示例,看起来所有内容都已正确设置。我不知道我做错了什么:/

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:5)

如果未在trace的构造函数的options参数中将SoapClient设置为true,则不会存储这些。所以简单地说,这对你有用:

$soapClient = new SoapClient($wsdl, array('trace' => true));

...您链接到的手册页明确指出:

  

注意:

     

此功能仅在创建SoapClient对象且trace选项设置为TRUE时才有效。