0

PHPを使用してSOAPベースのWebサービスを利用しようとしています。以下はサンプルコードです。戻されたオブジェクト要素にアクセスする方法を知る/学ぶ必要がありますか?私は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またはsimplexmllibを使用して文字列をロードできます。

于 2013-03-05T16:10:06.477 に答える