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

标签 php web-services soap

我正在阅读有关网络服务和 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() 查看发送的 header ,看看它们与我的相比如何一直在阅读,两个方法调用都返回 null

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

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

任何帮助将不胜感激!

最佳答案

如果您没有在 SoapClient 的构造函数的选项参数中将 trace 设置为 true,它将不会存储这些。简单地说,这对你有用:

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

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

Note:

This function only works if the SoapClient object was created with the trace option set to TRUE.

关于PHP SoapClient __getLastRequest 和 __getLastRequestHeaders 调用成功返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21647422/

相关文章:

PHP如何在开始 session 之前计算 session ID的长度

php - laravel中有没有有效的方法从数据库中选择记录并设置它们user_id?

javascript - 上传到服务器后 ajaxFileUpload 语法错误

php - php中的mysql查询具有来自两个表的更多条件

android - 从 WSDL 中查找 SOAPAction

javascript - 如何使用 Express.js 处理空 URL 参数

asp.net - Jquery Ajax Web服务和跨域问题

java - 如何向基于 Spring 配置的基于 Apache CXF 的 Web 服务客户端提供服务器地址?

ajax - 在phonegap错误中通过ajax调用SOAP Web服务

php - 为什么 getLastRequest 不返回任何东西?