2013-03-05 3 views
0

PHP를 사용하는 SOAP 기반 웹 서비스를 사용하려고합니다. 다음은 샘플 코드입니다. 나는 retur'ed object 요소에 접근하는 법을 알고 있어야한다. 는 내가주의 새로운 PHPPHP를 사용하여 SOAP 웹 서비스에서 반환 된 객체에 액세스하는 방법

$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}"; 
    } 

는 그래서이 방법을 다음과 같은 응답

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> 
     ) 

) 

을 반환 위에 내가 주석 라인을 실행할 때 나는

Notice: Undefined variable: CITY 

Fatal error: Cannot access empty property 

그러나 다음과 같은 예외를 얻을 수 해당 데이터가 반환되는 있지만 .NET에서 수행되는 방식으로 액세스 할 수 없습니다.

누구든지 PHP에서이 객체에 액세스하는 방법을 도와 줄 수 있습니까?

답변

0

우선 $ CITY 변수를 사용하여 $ result 속성에 액세스하고 아직 정의하지 않았습니다.

"result"개체 안에 "CITY"속성을 가져 오려면 "$ result-> City"로 수행해야합니다.

당신이 얻은 결과에 따르면 - 그것은 객체가 아니라 XML 문자열입니다. 문자열에 액세스하려면 다음과 같이하십시오.

$result->GetInfoByZIPResult->any 

DomDocument 또는 simplexml lib로 문자열을로드 할 수 있습니다.

+0

도움 주셔서 감사합니다. 그것은 분명히 작동하지만 내가 그것을 preints 개체를 인쇄하려고 할 때 ://하지만 XML로 개체를 인쇄 할 때 그것은 나에게 데이터를 보여줍니다. 지금 객체의 속성을 참조하는 방법을 알아야합니다. 다음은 코드입니다. $ obj = simplexml_load_string ($ result-> GetInfoByZIPResult-> any); echo $ obj-> asXML(); – Salman

+0

XML 문자열을 객체로 성공적으로 변환 한 경우 $ obj-> Table-> City와 같은 간단한 속성에 액세스 할 수 있습니다. 예 - 그런 개체를 버리면 사용자 행동이 다릅니다. –

+0

추가 도움이 필요하면 알려주세요 :) –

관련 문제