2013-08-04 2 views
0

SOAP 요청을하는 PHP 애플리케이션을 작성하고 있습니다. 때로는 자신의 서버가 최대가 아니거나 문제의 일종을 가지고 있으며, 내 응용 프로그램이 같은 오류로 인해 불면 :SOAP 요청 실패의 오류 처리 방법

Undefined property: stdClass::$getSomethingJSONResult 

이 SOAP 요청이 실패 이유의 숫자와 나는 검사 할 수 할 수 있습니다 프로그램이 처리 할 수 ​​있도록 이러한 오류 조건이 있습니다.

PHP에서 사용하는 두 가지 SOAP 함수가 있습니다. 하나는 SOAP 서버에 로그인하고 다른 하나는 soapFunction을 얻기 위해 쿼리를 작성하기위한 것입니다. 난 그냥이 작업을 수행 할 수 있다면

// --------------------- FUNCTIONS ----------------------- 
function login_soap($username,$password) { 

global $soapClient; 

$soapURL = "http://SOAPServerSomeplace.asmx?WSDL"; 
$ns = 'http://microsoft.com/webservices/'; //Namespace of the WS. 
$soapParameters = array('userName' => $username, 'password' => $password); 

$soapClient = new SoapClient($soapURL); 

$header = new SoapHeader($ns,'UserCredentials',$soapParameters,false); 

$soapClient->__setSoapHeaders($header); 

} 
// ------------------------------------------------------- 
function getSomething($option) { 

global $soapClient; 

$soapFunctionParameters = array('this' => $option) ; 
$soapFunction = "getSomethingJSON" ; 

$this_json = $soapClient->$soapFunction($soapFunctionParameters); 
$stdClassObject = json_decode($this_json->getSomethingJSONResult); 
$this_obj = $stdClassObject->this; 
return $this_obj; 
} 
// ------------------------------------------------------- 

궁금 : 그들은이 같은 모양

if (login_soap($username,$password)) { 
echo "This worked." . "\n"; 
} else { 
echo "This failed." . "\n"; 
} 

또는 getSomething ($ 옵션)와

?

SOAP 요청 실패를 시뮬레이트하는 방법을 모르겠지만 SOAP 요청이 실패하면 PHP가 중단 될 것이라고 생각합니다. 이것을 포착해야 PHP를 중단시키지 않아 다른 일을하도록 지시 할 수 있습니다.

첫 번째 관심사는 SOAP 요청이 제대로 작동하는지 확인하는 것입니다. 그런 다음 반환 된 JSON 파일에서 프로그램이 진행되기 전에 필요한 모든 데이터가 있는지 확인하십시오. JSON 파일을 확인해 보았습니다. SOAP 요청에는 포함되지 않았습니다. 감사!

답변

0

SoapClient 예외를 던질 수 있습니다.

예외를 throw하는 것이 비활성화 된 경우 해당 예외 개체는 이며이 반환됩니다. 반환 값이 SoapFault의 인스턴스인지 여부를 확인해야하지만보다 나은 방법은 throw하고 catch/try를 사용하는 것입니다.

SoapClient가 HTTP 오류를 감지 할 수 없기 때문에 더 많은 경우입니다. 이러한 오류를 잡으려면 예외를 예외로 던져야합니다 (XDebug가 활성화되어 있으면 작동하지 않지만 개발시에만 해당).