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:
client = new nusoap_client( ... );

$err = $client -> getError();

if ( $err )
{
     echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
     echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';
     exit();
}
É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 ...

$proxy = $client -> getProxy();

$response = $proxy -> ValamilyenFuggveny( $params );

if ( $proxy -> fault )
{
	echo $response["faultstring"];
}
else
{
	$error = $proxy -> getError();

	if ( $error )
	{
		echo $error;
	}
	else
	{
		print_r( $response );
	}
}