2012-01-12 4 views
1

Как поймать ошибку из SOAP?ошибка уловить из SOAP?

Как я могу избежать фатальной ошибки и преобразовать его в моей собственной ошибки .. В данном примере это 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

Помните, что с помощью РНР SoapClient вы можете также 'поймать (SoapFault $ е)' отдельно, если вы хотите. – Crontab

+0

hmm .. не могли бы вы показать мне как.? :) – clarkk

Смежные вопросы