2012-01-12 2 views
1

SOAP에서 오류를 잡는 방법? 내가 치명적인 오류가 발생하지 않도록 내 자신의 오류로 변환 할 수있는 방법SOAP에서 catch 오류가 발생 했습니까?

..이 예에서 그것은 SERVER_BUSY에게의

코드

class Validate_vatno { 
    private $client = null; 

    private $options = array(
     'debug' => false 
     ); 

    public function __construct(){ 
     $this->client = new SoapClient('http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', array('trace' => true)); 
    } 

    public function check($country, $vatno){ 
     $result = $this->client->checkVat(array(
      'countryCode' => $country, 
      'vatNumber' => $vatno 
      )); 

     if(!empty($this->options['debug'])){ 
      echo '<pre>'.htmlentities($this->client->__getLastResponse()).'</pre>'; 
     } 

     if($result->valid){ 
      list($denomination, $name) = explode(' ', $result->name, 2); 

      return array(
       'denomination' => utf8_decode($denomination), 
       'name' => ucwords(utf8_decode($name)), 
       'address' => ucwords(utf8_decode($result->address)), 
       ); 
     } 
     else{ 
      return array(); 
     } 
    } 
} 
$vatValidation = new Validate_vatno(); 

if($return = $vatValidation->check('DK', 33214944)){ 
    echo '<h1>valid one!</h1>'; 
    echo 'denomination: ' . $return['denomination']. '<br/>'; 
    echo 'name: ' . $return['name']. '<br/>'; 
    echo 'address: ' . $return['address']. '<br/>'; 
} 
else{ 
    echo '<h1>Invalid VAT</h1>'; 
} 

오류

Fatal error: Uncaught SoapFault exception: [soapenv:Server] { 'SERVER_BUSY' } in /var/www/ 

답변

5

검토하는 방법을 처리하는 방법 exceptions

투척 및 캐칭 예외

<?php 
function inverse($x) { 
    if (!$x) { 
     throw new Exception('Division by zero.'); 
    } 
    else return 1/$x; 
} 

try { 
    echo inverse(5) . "\n"; 
    echo inverse(0) . "\n"; 
} catch (Exception $e) { 
    echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 

// Continue execution 
echo 'Hello World'; 
?> 
+1

는 PHP의 SoapClient 당신도 할 수있는 '캐치 (SOAPFault에 $ 전자)를 사용하여'별도로 원하는 경우 기억하십시오. – Crontab

+0

흠 .. 어떻게 보여 주시겠습니까? :) – clarkk

관련 문제