ugrás a tartalomhoz

nuSOAP hibakezelés

Max Logan · 2008. Feb. 14. (Cs), 13.07
A nuSOAP segítségével kommunikálok egy ASP.NET-es webservice-zel. A kommunikáció működik rendesen, viszont azt nemtudom, hogy hogyan lehet normálisan hibakezelést megvalósíani.

Addig már eljutottam, hogy létrehozok egy proxy-t, ezen keresztül pedig egyszerű metódushívásokkal érem el a webservice funkcióit.

Beállítottam a kapcsolódási timeout-ot. Ha lejárt a megadott idő és nem sikerül kapcsolódni, akkor a getProxy metódus objektum helyett null-t ad vissza. Tehát ha nem jön létre a kapcsolat a megadott időn belül, akkor ilyen módon ezt le tudom kezelni.

De mi van a kérés visszaolvasása közben bekövetkezett időtúllépés esetén? Ezt hogyan tudnám lekezelni?

Sajnos sehol sem találtam doksit a nuSOAP-ról. Ami a sourceforge-ról le lehet tölteni az egy sima API doksi, de hát azzal sokra nem megyek. Az előnye, hogy nem a forrást kell böngésznem kezdésnek, de a végén úgyis azt kell megnéznem, mert semmi infó nincsen az API doksiban (azt is a forrásból sikerült kibogarászni, hogy hiba esetén null-lal tér vissza a getProxy).

A nuSOAP működését idő hiányában és úgy egyébként sem szeretném kód szinten megismeri, használni szeretném, de hát hivatalos doksi nélkül ...

Szóval van, valakinek gyakorlati tapasztalata a nuSOAP hibakezelésével kapcsolatban?
 
1

getError() metódus?

gex · 2008. Feb. 14. (Cs), 14.27
google után: http://dietrich.ganx4.com/nusoap/faq.php?id=97. hozzáteszem, hogy én nem használtam még ezt a nuSOAP-ot, szóval az ott leírtakat nem tudom megerősíteni.
2

Nem biztos, hogy jó

Max Logan · 2008. Feb. 14. (Cs), 14.33
Az egyik példa file-ban ez van:
  1. client = new nusoap_client( ... );  
  2.   
  3. $err = $client -> getError();  
  4.   
  5. if ( $err )  
  6. {  
  7.      echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';  
  8.      echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';  
  9.      exit();  
  10. }  
Én azt vártam, hogy connection timeout esetén itt jelzi a hibát. A valóság pedig az, hogy az $err üres lesz és megy tovább a script, majd amikor a proxy-nál meghívom a webservice egyik függvényét, akkor mondja azt a PHP, hogy nem ojjektum a proxy változó, aminek egy metódusát szeretném elérni.



UpDate:

Nos, még jó, hogy van saját debug rendszere. Annyit sikerült kiderítenem, hogy a nusoap_client osztály példányosításával nem jön létre a kapcsolat.

Én ezt vettem alapértelmezettnek, ezért nem azt csinálja amit én vártam (mondjuk kb. ezért hiányzik a normális doksi ...).

Tehát a connection_timeout-ot a getProxy() a null visszaadásával jelzi.

Ha szerencsém van, akkor a következő kódrészlettel ki lehet szűrni az adat visszaolvasása közben bekövetkezett időtúllépést ...
  1. $proxy = $client -> getProxy();  
  2.   
  3. $response = $proxy -> ValamilyenFuggveny( $params );  
  4.   
  5. if ( $proxy -> fault )  
  6. {  
  7.     echo $response["faultstring"];  
  8. }  
  9. else  
  10. {  
  11.     $error = $proxy -> getError();  
  12.   
  13.     if ( $error )  
  14.     {  
  15.         echo $error;  
  16.     }  
  17.     else  
  18.     {  
  19.         print_r( $response );  
  20.     }  
  21. }