0

我正在尝试使用基于 SOAP 的 web 服务 uisng PHP。以下是示例代码。我需要知道/学习如何访问返回的对象元素?请注意我是 PHP 新手

    $url = 'http://www.webservicex.net/uszip.asmx?WSDL';
    $soap = new SoapClient($url, array(
        "trace"      => 1,      // enable trace to view what is happening
        "exceptions" => 0,      // disable exceptions
        "cache_wsdl" => 0) );
    try {
        $result = $soap->GetInfoByZIP(array('USZip' => '97219'));

        echo($result->$CITY);
        //print_r( $soap->GetInfoByZIP(array("USZip" => "97219")));
    } catch (SoapFault $e) {
        echo "Error: {$e->faultstring}";
    }

我得到以下异常

Notice: Undefined variable: CITY 

Fatal error: Cannot access empty property 

但是,当我执行上面的注释行时,它会返回以下响应

 stdClass Object
(
    [GetInfoByZIPResult] => stdClass Object
        (
            [any] => <NewDataSet xmlns=""><Table><CITY>Portland</CITY><STATE>OR</STATE><ZIP>97219</ZIP><AREA_CODE>503</AREA_CODE><TIME_ZONE>P</TIME_ZONE></Table></NewDataSet>
        )

)

所以这意味着正在返回数据,但我无法像在 .NET 中那样访问它

谁能帮助我如何在 PHP 中访问这个对象,为什么?

4

1 回答 1

0

首先,您正在使用 $CITY 变量来访问 $result 属性并且您还没有定义它。

所以如果你想在“result”对象中获得“CITY”属性,你应该通过“$result->City”来完成。

根据你得到的结果 - 它是一个 xml 字符串,而不是对象。如果你想访问字符串这样做:

$result->GetInfoByZIPResult->any

您可以使用 DomDocument 或 simplexml lib 加载字符串。

于 2013-03-05T16:10:06.477 回答