1

我正在为一个项目学习 SOAP,现在我了解了它的基础知识。不敢相信我以前从未尝试过使用它。这很棒。但无论如何,对于我的问题。

我已经成功地将我的请求响应打印到 Web 浏览器,但我似乎无法将此响应转换为 STD 对象。

我一直在学习教程并将其调整为不同的 WDSL 文件,以完全了解我在做什么。

这是我的 PHP 文件。

<?

//////////////////////////////////////
//
//  ABOUT:      This file will send a request to the WSDL file and return a result in the browser window
//  AUTHOR:     Brad Bird
//  DATE:       07/02/2013
//
//////////////////////////////////////

// Setup the SOAP Client options
$wsdl = "http://www.mobilefish.com/services/web_service/countries.php?wsdl";
$options = array(
    "trace" => 1,
    "exception" => 0
);

// Creates new instance of the SOAP Client
$client = new SoapClient($wsdl, $options);

// Return a set of information using one function
$countryCode = "af";
$values = $client->countryInfoByIana($countryCode);

// Prints the details of the request and response to the browser
print "<h2>SOAP Details</h2>";
print "<pre>";
print "<h3>Request</h3> " . htmlspecialchars($client->__getLastRequest()) . "<br />";
print "<h3>Response</h3> " . htmlspecialchars($client->__getLastResponse());
print "</pre>";

// Prints the request in XML format
$xml = $values->countryInfoByIanaResponse;

print "<h2>stdClass Object</h2>";
print "<pre>";
print_r($xml);
print "</pre>";

我试图从中获取请求的这个 WSDL 文件就在这里。 http://www.mobilefish.com/services/web_service/countries.php?wsdl

由于某种原因,STD 对象部分没有显示任何内容。有任何想法吗?

4

1 回答 1

1

嗯,$xml 不是 stdClass 的对象,而是null. $values然而是。$values->countryInfoByIanaResponse不存在。您在 $values 中拥有的只是

: object(stdClass) = 
  ianacode: string = "af"
  countryname: string = "Afghanistan"
  latitude: double = 33.93911
  longitude: double = 67.709953

不确定您到底要做什么-也许在 $client 上而不是在结果上调用方法?此外,请查看有关 error_reporting 的 PHP 手册,然后您会在 print_r 行中偶然发现此通知:未定义属性:stdClass::$countryInfoByIanaResponse。

于 2013-02-07T21:27:00.470 回答