我犯了一个非常简单的错误,但似乎无法解决。我正在尝试使用 PHP SoapClient 库向 Web 服务发送 SOAP 请求。尝试打印时出现以下错误:
"类 stdClass 的对象无法转换为字符串"
这是代码,主要取自 PHP SoapClient 手册。
<?php
try {
$options = array(
'soap_version'=>SOAP_1_2,
'exceptions'=>true,
'trace'=>1,
'cache_wsdl'=>WSDL_CACHE_NONE
);
$client = new SoapClient('http://www.webservicex.net/ConvertTemperature.asmx?WSDL', $options);
$results = $client->ConvertTemp(array('Temperature'=>'100', 'FromUnit' => 'degreeCelsius',
'ToUnit' => 'degreeFahrenheit'));
}
catch (Exception $e)
{
echo "<h2>Exception Error!</h2>";
echo $e->getMessage();
}
$results = $client->ConvertTemp(array('Temperature'=>'100', 'FromUnit' => 'degreeCelsius',
'ToUnit' => 'degreeFahrenheit'));
print $results;
?>
我知道该消息告诉我我正在尝试打印整个对象而不是该对象的成员。我不明白的是,我希望调用 ConvertTemp 以返回字符串。为什么要返回对象?提前感谢任何帮助。
好吧,你的期望可能是错误的。var_dump
或print_r
可以阐明$results
实际上是什么,重新检查 wsdl 可以告诉您原因:
提示: __getTypes()
:
struct ConvertTempResponse {
double ConvertTempResult;
}